gpt4 book ai didi

java - 鼠标坐标查找器 GUI 无法正常运行

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:54 26 4
gpt4 key购买 nike

我想用 JFrame 制作一个程序,允许您启动和停止使用鼠标光标的最新坐标更新 JLabel。我不明白我做错了什么。请给予帮助并给予尊重。我是 Java 新手,所以我无法控制自己所犯的愚蠢错误。

这是代码:

import java.awt.* ;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;


public class PrintPos extends JFrame {
private static final long serialVersionUID = 7526472295622776147L;
public JButton startBtn;
public JButton stopBtn;
public static JLabel posLabelX;
public static JLabel posLabelY;
static boolean started=false;

public static void main(String args[]){
new PrintPos();
}


PrintPos() {

setLayout(new GridLayout(2,2));

startBtn = new JButton("Start");
stopBtn = new JButton("Stop");
posLabelY = new JLabel("X:");
posLabelX = new JLabel("Y:");

add(startBtn);
add(stopBtn);
add(posLabelX);
add(posLabelY);

setSize(200,150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);

startBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent a)
{
started = true;
while(started) {
PointerInfo inf = MouseInfo.getPointerInfo();
Point p = inf.getLocation();
posLabelX.setText(String.valueOf(p.x));
posLabelY.setText(String.valueOf(p.y));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return;
}
}
}
});

stopBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
started = false;
}
});
}

public static void getInfo() {
while(started) {
PointerInfo inf = MouseInfo.getPointerInfo();
Point p = inf.getLocation();
posLabelX.setText(String.valueOf(p.x));
posLabelY.setText(String.valueOf(p.y));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return;
}
}
}

}

最佳答案

您正在阻塞事件调度线程。 EDT 负责处理事件和绘制请求并响应用户输入。当您的 whileActionListener 中运行时,EDT 无法处理任何新事件,您的程序将“挂起”

看看Concurrency in Swing了解更多详情。

看看Worker Threads and SwingWorkerHow to use Swing Timers寻求一些解决方案的想法。

对于可运行的示例,请查看 here

关于java - 鼠标坐标查找器 GUI 无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32662903/

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