在方法中等待MouseListener

时间:2019-03-11 19:48:52

标签: java multithreading swing

我有一个静态方法,其中我向现有的MouseListener(使用现有的鼠标侦听器)添加JPanel,并希望停止该方法,直到鼠标侦听器发出信号为止。

尝试:

public Object sync;
public static void main(){
    //do someThing
    panel.addMouseListener(new MouseListener() {

        public void mouseClicked(MouseEvent mE) {
                                 synchronized(Main.sync) {
                                       sync.notify();
                                 }
                                }
        public void mouseEntered(MouseEvent mE) {
                                }
        public void mouseExited(MouseEvent mE) {
                                }
        public void mousePressed(MouseEvent mE) {
                                }
        public void mouseReleased(MouseEvent mE) {
                                }

                            });
   synchronized(Main.sync) {                 
    try{
         Main.sync.wait();
    }catch(exeption e){
         //do nothing
    }
}
    //continue
}

但是应用程序到达等待语句时只是停止响应;我是线程管理的新手,不胜感激。

尝试:

 public Object sync;
 public static void main(){
    //do someThing
    SwingUtilitys.invokeLater(new Runnable(){
        public void run(){
            panel.addMouseListener(new MouseListener() {

                public void mouseClicked(MouseEvent mE) {
                      synchronized(Main.sync) {
                           sync.notify();
                      }
                }
                public void mouseEntered(MouseEvent mE) {
                }
                public void mouseExited(MouseEvent mE) {
                }
                public void mousePressed(MouseEvent mE) {
                }
                public void mouseReleased(MouseEvent mE) {
                }

             });
        });
   synchronized(Main.sync) {                 
    try{
         Main.sync.wait();
    }catch(exeption e){
         //do nothing
    }
}
}

,效果很好。感谢ContAltDEl。

0 个答案:

没有答案