문제점 : 일정 시간이 지나면 자동으로 프로그램을 닫습니다.Java로 외부 프로그램을 시작 하시겠습니까?
솔루션 : 여기 나는 내 문제를 해결하기 위해 함께 온 것입니다 (우분투 리듬와 함께 작동) :
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();
}
}
}
}
그냥 텍스트 파일을 여는 것을 의미한다고 가정하면 해당 명령을 입력하고 bat 파일로 저장 한 다음 Java 프로그램에서 사용하십시오. 나는 열어 보려고 노력하는 대신에 간단히 열 수 있기 때문에 좀 더 집중해야한다고 생각합니다. x 분 후에 프로세스를 종료하면됩니다. 일식이 .exec()의 역 연산을 제공하는지 아니면 API를 간단히 살펴볼지를 알 수 있습니다. 여러분의 제안에 감사드립니다! –