gpt4 book ai didi

java - 为什么我的程序不处理鼠标运动? ( java )

转载 作者:行者123 更新时间:2023-12-01 14:59:14 25 4
gpt4 key购买 nike

我尝试制作一些很酷的“鼠标跟踪器”。它会记录您的鼠标位置,直到您按下“跟踪”按钮,当您单击它时,它会“恢复”鼠标位置。

它似乎不处理 mouseMove 方法。为什么?

import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JButton;
import javax.swing.JFrame;


public class Mouse implements MouseMotionListener {
JFrame frame = new JFrame();
JButton move = new JButton("Track");
Point[] points = new Point[100000];
int i = 0;


public Mouse() {
// restore on track
move.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
try {
Mouse.this.restore();
} catch (InterruptedException | AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});
// initialize component
frame.setPreferredSize(new Dimension(300, 300));
frame.getContentPane().add(move);
frame.addMouseMotionListener(this);
frame.pack();
frame.setVisible(true);
}
@Override
public void mouseDragged(MouseEvent e) {}

@Override
public void mouseMoved(MouseEvent e) {
System.out.println("Mouve move");
if(i < 100000) {
points[i] = e.getLocationOnScreen();
i++;
}
}

public void restore() throws InterruptedException, AWTException {
System.out.println("Mouse restored");
for(int j = 0; j < i; j++) {
Robot r = new Robot();
r.mouseMove(points[j].x, points[j].y);
Thread.sleep(100);
}
}

public static void main(String[] args) {
Mouse s = new Mouse();
}

}

最佳答案

  1. 添加MouseListenerJFrame或其 ContentPane ,而不是JButton - 主要原因
  2. 使用 SwingUtilities.invokeLater() 在 EDT 线程中运行 Swing
  3. 删除 mouseMotionListener当您调用restore时从JFrame
  4. 将机器人创建置于循环之外

这个

for(int j = 0; j < i; j++) {
Robot r = new Robot();

Robot r = new Robot();
for(int j = 0; j < i; j++) {

关于java - 为什么我的程序不处理鼠标运动? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13914912/

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