简体   繁体   English

在事件侦听器之间等待Java

[英]Waiting between event listeners java

My problem: 我的问题:

I've got two events listeners attached to a JLabel and a variable A 我有两个附加到JLabel的事件侦听器和一个变量A

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

What I would like to do is the following: when mouseExited is triggered wait during X milliseconds for catching some changes (if happened) in the A variable due to some code into the mouseEntered event listener. 我要执行的操作如下:触发mouseExited时,由于在mouseEntered事件侦听器中添加了一些代码,因此需要等待X毫秒的时间才能捕获A变量中的某些更改(如果发生)。

I already tried with Timer but doesn't work --> I can't catch the new value of variable A during the wait period. 我已经尝试过使用Timer,但无法正常工作->在等待期间,我无法捕获变量A的新值。 I can only catch it after Timer is out. 我只能在定时器用完后才能捕捉到它。

Any ideas to implement this? 有什么想法可以实现吗?

I tried this, 我试过了

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);
    }

Steps of events: 事件步骤:

1) mouseExited is triggered -> wait for 1 second 1)mouseExited被触发->等待1秒
2) During this time, if mouseEntered is triggered (condition not verified in mouseEntered) it should ended the scheduled task but instead it throws back a Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 2)在此期间,如果触发mouseEntered(mouseEntered中未验证条件),则它应结束预定任务,但会在线程“ AWT-EventQueue-0” java.lang.NullPointerException中抛出异常。

How is it possible to end this scheduled task if mouseEntered is triggered during tis time? 如果在这段时间内触发mouseEntered,如何结束此计划任务?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM