在我的程序中,我希望能够点击JPanel中的某个位置,以便将对象添加到屏幕上。单击鼠标时,将在该点创建一个对象。如果按住鼠标按钮半秒钟,则每隔1/10秒开始创建一次对象。这部分工作正常。代码如下所示。
我的问题是,当鼠标在屏幕上拖动时,我想获取鼠标的更新位置,并在该新位置创建一个对象,而不是在事件被触发的位置。 MouseEvent具有getX和getY函数,但它只返回触发事件时鼠标所在的位置。有关如何在拖动鼠标时保持位置更新的任何想法?注意:下面的mouseDragged函数永远不会运行。有什么想法吗?
//MyClass extends JPanel, and is put into a JFrame before being displayed
final MyClass simulation = new MyClass();
simulation.setBounds(0, 0, 500, 500);
simulation.addMouseListener(new MouseAdapter() {
private Timer timer;
//Create a new body and add it to the list, then repaint the screen.
public void createBody(int x, int y) {
simulation.getBodies().add(simulation.createBody(x, y));
simulation.repaint();
}
@Override
public void mousePressed(final MouseEvent e) {
if (timer == null) {
timer = new Timer();
createBody(e.getX(), e.getY());
}
timer.schedule(new TimerTask() {
@Override
public void run() {
createBody(e.getX(), e.getY());
}
}, 500, 100);
}
@Override
public void mouseReleased(MouseEvent e) {
if (timer != null) {
timer.cancel();
timer = null;
}
}
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("Mouse was moved!");
}
});
我目前的代码取自this question