gpt4 book ai didi

java - 从按钮调用时鼠标事件等待卡住

转载 作者:行者123 更新时间:2023-12-02 00:22:02 26 4
gpt4 key购买 nike

我有一种方法可以显示透明窗口覆盖层,这样我就可以通过单击来指示屏幕上矩形区域的角点。

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

这与最初由 Action 监听器调用这一事实有关吗?

最佳答案

您正在阻止Event Dispatch Thread 。由于 actionPerformed 方法将在 EDT 上调用,因此 getClickPoint 中的 while 循环将阻止 EDT 处理任何事件(包括您正在等待的鼠标事件),从而导致您的程序变得无响应。

如果您需要执行耗时的任务(例如阻塞),请查看 SwingWorker .

关于java - 从按钮调用时鼠标事件等待卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10766863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com