我正在尝试编写一个Mouse类(实现MouseListener和MouseMotionListener),其中包含mousePressed()和mouseMoved()。我想要能够检测到鼠标运动时,鼠标是向下的。我可以分别检测每一个,但不能同时检测。例如:
import javax.swing.*;
import java.awt.event.*;
public class Test extends JPanel {
public Test() {
Mouse m = new Mouse();
addMouseListener(m);
addMouseMotionListener(m);
}
class Mouse implements MouseListener, MouseMotionListener{
public void mousePressed(MouseEvent e) {
System.out.println("Pressed");
}
public void mouseMoved(MouseEvent e) {
System.out.println("Moved");
}
public void mouseDragged(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new Test());
frame.setVisible(true);
}
}正如您应该看到的,“按下”和“移动”都是打印出来的,但是一旦鼠标被按下,直到鼠标释放,“移动”才会被打印出来。我要怎么做才能做到呢?
发布于 2016-06-11 22:20:53
void mouseDragged(MouseEvent e) 当鼠标按钮按在组件上,然后拖动时调用。 void mouseMoved(MouseEvent e) 当鼠标光标移动到组件上但没有按下按钮时调用。
只有在没有按下按钮时才会触发mouseMoved事件。
发布于 2016-06-11 22:19:09
正如您应该看到的,“按下”和“移动”都是打印出来的,但是一旦鼠标被按下,直到鼠标释放,“移动”才会被打印出来。
当鼠标按下时,您需要处理的事件是mouseDragged事件。
https://stackoverflow.com/questions/37768917
复制相似问题