2012-01-20 149 views
8

最近我一直在研究java中的2D遊戲,並且正在嘗試讓事件處理系統正常工作。我試圖讓鼠標點擊來開始動畫,它一直工作,直到我試圖移動鼠標,而點擊。在這一點上什麼也沒有發生。我正在使用mouselistener和mousemotionlistener類,問題仍然存在。 下面是主要代碼:當鼠標移動時,Java鼠標事件被忽略了嗎?

public class ML extends MouseAdapter{ 
    public void mouseClicked(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1) 
     guns.playOnce(); 
    } 
    public void mouseReleased(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1); 
    } 

它調用動畫類播放圖像組的一個時間和停止。 在我包含鼠標事件之前,動畫師完美地工作。如果在鼠標移動過程中沒有指定的動作,我無法弄清楚爲什麼在鼠標移動過程中它不起作用。如果有一個明顯的解決方案,我很抱歉,我不久前就開始使用java。)

回答

6

在Java中,如果在沒有移動鼠標的情況下按下並釋放鼠標,則鼠標單擊僅會註冊。這對大多數用戶來說很難完成,所以大多數UI元素(如按鈕)會對鼠標按下並釋放事件做出反應,並忽略「單擊」。

但是,對於按鈕,更好的選擇是向其添加ActionListener。然後,按鈕本身將聽取鼠標事件並決定它何時被點擊。

+0

謝謝!關於點擊的提示會在稍後爲我節省一些挫折。 – Ryan

+2

@trashgod:實際上'ButtonModel'只是跟蹤狀態 - 它是'ButtonUI',它監聽鼠標事件並更新模型。 –