2011-02-14 85 views
2

问题:在一定的时间过后自动关闭程序。用Java启动外部程序?

解决方案:这里是我想出了解决我的问题(与工作的Rhythmbox在Ubuntu):

package rhythmBox; 

import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.IOException; 
import java.util.concurrent.TimeUnit; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class closeRhythmBox extends JFrame implements ActionListener { 

private static final long serialVersionUID = 1L; 
private static final int WIDTH = 400; 
private static final int HEIGHT = 300; 
private JTextField minutesBox; 

public static void main(String[] args) { 
    new closeRhythmBox().setVisible(true); 
} 

public static void execKill(long minutes) throws InterruptedException { 
    Thread.sleep(minutes*60*1000); 
    try{ 
    Runtime.getRuntime().exec("pkill rhythmbox"); 
    System.exit(0); 
     } 
    catch (IOException ioe) { 
      ioe.printStackTrace(); 
     } 
} 
public closeRhythmBox(){ 
    setTitle("Rythmbox Timer"); 
    setSize(WIDTH, HEIGHT); 
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    Container pane = getContentPane(); 
    pane.setLayout(new FlowLayout()); 

    JPanel box = new JPanel(); 
    box.setLayout(new FlowLayout()); 
    JButton startButton = new JButton("Start"); 
    startButton.addActionListener(this); 
    box.add(startButton); 
    box.add(new JLabel("Minutes Until Close")); 
    box.add(minutesBox = new JTextField(20)); 

    pane.add(box); 
    pack(); 

} 

public void actionPerformed(ActionEvent e) { 
    String textNum = minutesBox.getText(); 
    long minuteNum = Long.parseLong(textNum); 
    if (e.getActionCommand().equals("Start")){ 
     try { 
      execKill(minuteNum); 
     } catch (InterruptedException e1) { 
      e1.printStackTrace(); 
     } 
    } 
} 

}

回答

1

我不知道你怎么能设置的无线电台。但我想我可以告诉你如何打开媒体播放器: 我打电话给一个bat文件来更新我的ip地址,它对我来说工作得很好。如果你设法调用.bat,那么你可以忘记java,并尝试启动播放器并从那里给他发送参数。

这是用java应该如何调用蝙蝠:

Runtime.getRuntime().exec("cmd /c start file.bat"); 

这或多或少将.bat实现应该看起来像:

开始 “” 为“%ProgramFiles%\ Windows媒体播放器\ wmplayer.exe“

现在,您只需要了解如何设置媒体播放器以默认启动该电台。

+0

假设你的意思是我只是打开一个文本文件,输入该命令,将其保存为bat文件,然后在我的Java程序中使用它?我想,不要试图打开,我应该更关注CLOSING,因为我可以简单地打开我的自我。我只需要在x分钟后终止这个过程。我会看看eclipse是否给了.exec()的逆操作,或者可能只是简单的看一下API。感谢大家的建议! – 2011-02-14 20:19:11

3

你可能无法启动一个EXE的方式。我认为这是打算使用默认应用程序打开文件,而不是自己运行应用程序 - 无论是或者您只是在运行Windows安全性。

您可以使用Java.lang.Process来运行带参数的程序。

0

Desktop.open()不用于运行可执行文件。您只需给它一个“数据文件”(例如mysong.mp3或myvideo.avi),然后它将使用系统的默认关联打开该文件。

如果你想运行.exe使用的ProcessBuilder(搜索这个网站,已经有关于的ProcessBuilder最后的日子里很多问题)

相关问题