在事件监听器之间等待java

时间:2014-01-29 21:38:38

标签: java events listener wait

我的问题:

我有两个事件监听器附加到JLabel和变量A

boolean A = false;
public void mouseEntered(MouseEvent evt) { ... }
public void mouseExited(MouseEvent evt) { ... }

我想要做的是:当触发mouseExited时,等待X毫秒,以便在A变量中捕获一些更改(如果发生),因为一些代码进入了mouseEntered事件监听器。

我已经尝试使用Timer但不起作用 - >在等待期间,我无法捕获变量A的新值。我只能在Timer退出后才能抓住它。

要实现这个想法吗?

1 个答案:

答案 0 :(得分:0)

我试过了,

label.addMouseListener(new MouseAdapter() {
    java.util.Timer t;

    @Override
    public void mouseEntered(MouseEvent evt) {
         // Test Condition
         if(condition) {
             // do something
         } else {
             t.cancel();
             t.purge();
         }
    }

    @Override
    public void mouseExited(MouseEvent e) {
        t = new java.util.Timer();
        t.schedule(new TimerTask() {
            @Override
             public void run() {
                 // do something
                 t.cancel();
                 t.purge();
             }
        }, 1*1000);
    }

事件的步骤:

1)触发mouseExited - >等待1秒钟 2)在此期间,如果触发了mouseEntered(条件未在mouseEntered中验证),它应该结束计划任务,但它会在线程“AWT-EventQueue-0”中抛出异常java.lang.NullPointerException

如果在tis时间内触发mouseEntered,如何结束此计划任务?