2

问题:一定分钟后自动关闭程序。

解决方案:这是我想出的解决问题的方法(在 Ubuntu 上与 Rhythmbox 一起使用):

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();
        }
    }
}   

}

4

3 回答 3

3

您可能无法以这种方式启动 EXE。我认为这旨在使用默认应用程序打开文件,而不是自己运行应用程序 - 要么就是你正在运行 Windows 安全性。

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

于 2011-02-14T07:42:27.553 回答
1

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

这就是 java 调用 .bat 的方式:

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

这或多或少的 .bat 实现应该如下所示:

启动 "" "%programfiles%\Windows Media Player\wmplayer.exe"

现在您只需要了解如何将媒体播放器设置为默认从您想要的那个电台开始。

于 2011-02-14T09:18:07.637 回答
0

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

如果您想运行 .exe,请使用 ProcessBuilder(搜索此站点,最近几天有很多关于 ProcessBuilder 的问题)

于 2011-02-14T07:43:59.873 回答