在Eclipse Java中未检测到鼠标输入
我正在制作一个需要用户从鼠标输入的程序,所以我制作了一个鼠标类来扩展MouseAdapter。当通过在窗口中单击来测试它时,它什么也没做。代码如下所示。谢谢你的帮助 主课在Eclipse Java中未检测到鼠标输入,java,swing,jpanel,mouseevent,mousemotionlistener,Java,Swing,Jpanel,Mouseevent,Mousemotionlistener,我正在制作一个需要用户从鼠标输入的程序,所以我制作了一个鼠标类来扩展MouseAdapter。当通过在窗口中单击来测试它时,它什么也没做。代码如下所示。谢谢你的帮助 主课 public class Main extends JFrame { private static final long serialVersionUID = 1L; public Main() { add(new Window()); setDefaultCloseOpe
public class Main extends JFrame {
private static final long serialVersionUID = 1L;
public Main() {
add(new Window());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(720, 480);
setLocationRelativeTo(null);
setTitle("Mouse Input");
setVisible(true);
setResizable(false);
}
public static void main(String args[]) {
new Main();
}
}
窗口类
public class Window extends JPanel implements ActionListener {
private static final long serialVersionUID = 1L;
public Window() {
addMouseMotionListener(new Mouse());
Timer timer = new Timer(10, this);
timer.start();
}
@Override
public void actionPerformed(ActionEvent arg0) {
}
}
老鼠课
class Mouse extends MouseAdapter{
public void mouseClicked(MouseEvent e) {
System.out.println("Clicked");
}
public void mouseDragged(MouseEvent e) {
System.out.println("Dragged");
}
}
它在单击时不起任何作用,因为您已将其作为MouseMotionListener添加到JPanel中,而不是作为MouseListener。您还需要通过
addMouseListener(…)
方法将鼠标实例传递到JPanel中,以便发生MouseListener事件
i、 e
addMouseMotionListener(新鼠标());
addMouseListener(新MouseListener(){
我刚刚意识到,它在被拖的时候什么也做不了。
public Window() {
Mouse myMouse = new Mouse();
addMouseMotionListener(myMouse); // you already have this
addMouseListener(myMouse); // **** add this!! ****
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent arg0) {
System.out.println("asdasd");
}
});