【发布时间】:2014-07-24 06:59:59
【问题描述】:
我有一个变量值,用于跟踪数字是奇数还是偶数。
我初始化了一个
int value = 0;-
变量“value”现在为0,点击2次后系统会打印出“偶数”,1秒后变量“value”加1;
李> 变量“value”现在是 1,它是奇数,所以会打印出“odd”,一秒钟后,变量 value 会加 1;
变量“value”现在是 2,它是偶数,所以它会再次允许用户点击 JFrame 2 次。点击2次后,系统会打印出“偶数”,一秒后, 变量“value”将加 1;
-
变量“value”现在是 3,它是奇数,所以它会打印出“odd”,一秒钟后,变量 value 将增加 1;
等等……
这种情况一直持续到我关闭程序为止。
我将“值”放在我的计时器中并增加它,但是“值”在倒计时后没有增加。为什么它不增加?请帮忙。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
@SuppressWarnings("serial")
public class OnClickLesson extends JFrame {
private int value = 0, clicked = 0, countdown = 1;
private Timer timer = new Timer(1000, null);
public OnClickLesson() {
timer = new Timer(1000, new countDownTimer());
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if(value%2 == 0) {
clicked++;
if(clicked == 2) {
System.out.println("even");
timer.start();
}
}
}
});
if(value%2 == 1) {
System.out.println("odd");
timer.start();
}
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
pack();
setSize(400,600);
setLocationRelativeTo(null);
setVisible(true);
}
private class countDownTimer implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (countdown == 0) {
timer.stop();
countdown = 1;
value++;
}
else {
System.out.println("Countdown " + countdown--);
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new OnClickLesson();
}
});
}
}
【问题讨论】:
-
根据我的测试,当我双击框架时,计时器启动,它倒计时并递增
value并将countdown设置为1。此时无法重新启动计时器,因为值现在是奇数...
标签: java swing timer mouselistener