Java 如何在鼠标退出事件上启动计时器,并在鼠标进入事件上停止相同的计时器?
我有一个名为Java 如何在鼠标退出事件上启动计时器,并在鼠标进入事件上停止相同的计时器?,java,swing,timer,jlist,Java,Swing,Timer,Jlist,我有一个名为提醒列表的列表 当鼠标单击列表中的某个项目,鼠标退出列表时,我希望计时器启动 当鼠标进入列表时,如果计时器仍在运行,我希望计时器停止 当鼠标再次退出列表时,我希望相同的计时器重新启动 public void waitReminderList(int status) { Timer timer = new Timer(10000, new ActionListener() { public void actionPerformed(ActionEvent evt
提醒列表
的列表
当鼠标单击列表中的某个项目,鼠标退出列表时,我希望计时器启动
当鼠标进入列表时,如果计时器仍在运行,我希望计时器停止
当鼠标再次退出列表时,我希望相同的计时器重新启动
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还是相当陌生,我不理解给出的答案
谢谢不要一直在WaitEmployerList()方法中创建新计时器。您应该将计时器定义为类变量
然后根据需要停止/启动它。问题是,每次调用
waiterementerlist
时,您都在创建一个新的计时器。任何以前运行的计时器
对象都不会停止。由于您需要一个计时器
将引用移到方法之外,例如在类级别。您是否尝试过在if块内部添加一些调试输出,以查看在执行某些操作时它将到达什么代码?我做过,但在发布此消息时将它们取出。他们没有帮助我,我只看到我的if语句起作用了。但是谢谢你的建议!成功了,谢谢!它现在有这么多的意义,我希望我在发布之前想到它。。。