【发布时间】:2012-06-01 18:30:09
【问题描述】:
我有一个方法可以显示一个透明的窗口覆盖,这样我就可以通过点击来指示一个矩形屏幕区域的角点。
public Point getClickPoint(){
JFrame frame = new JFrame("");
MyMouseListener mouseL = new MyMouseListener();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setUndecorated(true);
makeTranslucent(frame, Float.valueOf(0.40f));
frame.setSize(toolkit.getScreenSize());
frame.setVisible(true);
frame.addMouseListener(mouseL);
while(!mouseL.done){
try {
Thread.sleep(4);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
当我以正常方式调用它时,它工作正常,但如果我按下按钮调用它,它就会挂起,不记录点击并最终冻结。
Button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
getClickPoint();
}
}
这是否与它最初由动作侦听器调用的事实有关?
【问题讨论】:
标签: java multithreading swing awt sleep