Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在鼠标退出事件上启动计时器,并在鼠标进入事件上停止相同的计时器?_Java_Swing_Timer_Jlist - Fatal编程技术网

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语句起作用了。但是谢谢你的建议!成功了,谢谢!它现在有这么多的意义,我希望我在发布之前想到它。。。