2011-12-16 286 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()方法來檢查按下了哪個鼠標按鈕。