How to start a Timer on a mouse exit event and stop that same Timer on a mouse enter event?
我有一个名为
的列表
当鼠标点击列表中的一个项目并且鼠标退出列表时,我想要一个计时器启动。
当鼠标进入列表时,如果它仍在运行,我希望该计时器停止。
当鼠标再次退出列表时,我希望重新启动相同的计时器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 还是很陌生,我不明白给出的答案。
谢谢
问题是每次调用
不要在你的 waitReminderList() 方法中不断创建一个新的 Timer。您应该将 Timer 定义为类变量。
然后您只需根据需要停止/启动它。