首页 > 解决方案 > 在方法中等待 MouseListener

问题描述

我有一个静态方法,在其中我将 a 添加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
    }
}
}

它工作得很好。感谢 ConAltDEl。

标签: javamultithreadingswing

解决方案


推荐阅读