有没有办法轻松将thread.sleep转换为javax.swing.timer?
我需要这样做的原因是当你按下按钮时停止用户界面冻结,这样你就可以实现一个暂停按钮。
代码示例:
btnStartTiming.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent arg0) {
try{
inputA = Double.parseDouble(txtEnterHowLong.getText()); //Changes double to string and receives input from user
}catch(NumberFormatException ex){
}
while (counter <= inputA){
txtCounter.setText(counter + "");
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
System.out.println(counter);
counter++;
}
}
});
答案 0 :(得分:3)
一些提示:
看看How to use Swing Timers 跟踪并回答具体问题。描述你到目前为止要完成的工作和你的工作,展示你试图解决问题并提出一个可回答的问题。
请勿使用MouseListener 按下按钮时听。使用ActionListener 代替。看看How to Use Buttons, Check Boxes, and Radio Buttons路径。
答案 1 :(得分:2)
java.swing.Timer
放入构造函数中。您可以使用按钮.start()
计时器。while
,而不是.stop()
像这样的东西
int delay = 1000;
Timer timer = new Timer(delay, null);
public Constructor(){
timer = new Timer(delay, new ActionListener(){
public void actionPerformed(ActionEvent e) {
if (counter >= inputA) {
timer.stop();
} else {
// do something
}
}
});
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
timer.start();
}
});
}