2011-12-16 126 views
1

我有一个使用AWT事件模型的小程序。它有一个布尔值,表示是否按下左按钮。下面是一个示例代码:Java AWT鼠标事件

public class Game extends Applet implements MouseListener 
{ 
    boolean isLeftButtonPressed; 

    public void init() 
    { 
     addMouseListener(this); 
     isLeftButtonPressed = false; 
    } 

    public void paint(Graphics g) 
    { 
     g.drawString("Is Button Pressed: " + isLeftButtonPressed, 20, 20); 
    } 

@Override 
public void mouseClicked(MouseEvent e) 
    { 
     isLeftButtonPressed = true; 
     repaint(); 
} 

    @Override 
public void mouseReleased(MouseEvent e) 
    { 
     isLeftButtonPressed = false; 
     repaint(); 
} 

    //Other MouseListener methods not listed but have to be implemented 
} 

但它好像左键永远不会释放,你居然这样做,即使之后。可能是什么问题呢?

+0

谁低估了这个 - 这个网站对新用户很友好。特别是对那些真正提出有意义的问题的人来说,有足够的信息是格式良好的。你怎么了? – 2011-12-16 04:32:33

+0

这个问题实际上不同于[输入管理器的Java错误](http://stackoverflow.com/questions/8529522/input-manager-for-java-error)? (我不是down-voter,顺便说一句) – 2011-12-16 04:40:37

回答

4

在这个根本不正确,

这些都是鼠标事件,

MousePressed -> a mouse button is pressed 
MouseReleased -> a mouse button is released 
MouseClicked -> a mouse button is clicked (pressed and released) 

所以,当你处理click事件,这意味着鼠标点击和释放。

所以我认为你必须使用mousepressed而不是点击。

MouseEvent

4

方法mouseClicked将在mouseReleased方法后调用,所以isLgetButtonPressed的值将为true。您必须使用MouseEvent.getButton()方法来检查按下了哪个鼠标按钮。