我有一个静态方法,其中我向现有的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。