我有一个名为reminderList
的列表。
当鼠标点击列表中的某个项目并且鼠标退出列表时,我想要一个计时器启动。
当鼠标进入列表时,我希望该计时器停止,如果它仍在运行。
当鼠标再次退出列表时,我希望重新启动相同的计时器。
public void waitReminderList(int status) {
Timer timer = new Timer(10000, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
reminderList.clearSelection();
dismissReminder.setEnabled(false);
}
});
if (status == 0) {
if (!reminderList.isSelectionEmpty()) {
timer.setRepeats(false);
timer.restart();
timer.start();
}
} else if (status == 1) {
if (!reminderList.isSelectionEmpty()) {
timer.stop();
}
}
private void reminderListMouseExited(java.awt.event.MouseEvent evt) {
waitReminderList(0);
}
private void reminderListMouseEntered(java.awt.event.MouseEvent evt) {
waitReminderList(1);
}
问题是:计时器在启动后没有停止或重启或做任何事情,但我需要它。
我对问题的解决方案是拥有一个int,然后我可以通过int的值来控制我想要的计时器。但它不起作用,计时器不会停止......
那么我做错了什么?
我知道还有其他这样的问题但是,我仍然是相当新的java,我不明白给出的答案。
谢谢
答案 0 :(得分:2)
问题在于,每次调用Timer
时都会创建一个新的waitReminderList
。以前运行的任何Timer
对象都不会停止。由于您希望单个Timer
移动参考在之外的方法,例如在班级。
答案 1 :(得分:1)
不要在waitReminderList()方法中继续创建新的Timer。您应该将Timer定义为类变量。
然后你可以根据需要停止/启动它。