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を起動することはできません。これは、自分でアプリを実行するのではなく、デフォルトのアプリを使用してファイルを開くことを目的としたものだと思います。

Java.lang.Processを使用して、引数を指定してプログラムを実行できます。

于 2011-02-14T07:42:27.553 に答える
1

どうやってラジオ局を設定できるのかわかりません。しかし、私はメディアプレーヤーを開く方法をあなたに教えることができると思います:私は私のIPアドレスを更新するために一度batファイルを呼び出しました、そしてそれは私にとってうまくいきました。.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など)を指定すると、システムのデフォルトの関連付けでそのファイルが開きます。

ProcessBuilderを使用して.exeを実行する場合(このサイトを検索してください。ここ数日、ProcessBuilderに関して多くの質問がありました)

于 2011-02-14T07:43:59.873 に答える