2014-04-30 102 views
0

好吧,我不確定爲什麼我的MouseListener不工作,但我認爲這可能是因爲我在課堂上實現了ActionListenerMouseListener。這會導致班級出現問題嗎?MouseListener not catch the mousePressed/Clicked

actionPerformed方法:

public void actionPerformed(ActionEvent e){... 
     ... 
} 

的mouseClicked方法:

public void mouseClicked(MouseEvent arg0) { 
    ... 
} 

是因爲它只是聽actionPerformed方法,從來沒有進入的MouseListener?如果我懷疑是正確的,我將如何讓它一起工作?

編輯:我縮小了它在MouseListener中的錯誤。它從來沒有從鼠標得到任何輸入,我是否必須指定它應該聽的區域?

public void mousePressed(MouseEvent arg0) { 
     System.out.println("Inside timer is running"); 

     if(timer.isRunning() == true){ 
      System.out.println("Inside timer is running"); 
      Point p = arg0.getPoint(); 
     } 
} 

回答

2

你問:

好了,所以我不知道爲什麼我的MouseListener不工作,但我想可能是因爲我實現了兩者的ActionListener和MouseListener的進級。這會導致班級出現問題嗎?

不,這不應該影響事情。你的問題很可能存在於代碼中的其他地方未顯示。

說了這些之後,我想補充一點,我的GUI類幾乎沒有實現這些或其他監聽器接口,因爲我覺得這會讓這個類負責太多,使它更難現在調試或稍後升級。相反,我喜歡匿名的內部類,然後調用控制方法,或者完全獨立的控制/偵聽器類(es)。


編輯
我不認爲你的發佈代碼和文本是足以讓我們瞭解你的問題的回答了它只是說,問題出在其它地方。如果您很快就沒有得到體面的答案,請考慮創建併發布Minimal, Complete, and Verifiable Example Program


編輯2
幽州的評論:

我不認爲我可以張貼了代碼,它清除掉,因爲這是一個巨大的計劃。這個類就有300行,但我知道一切工作只是MouseListener的工作不喜歡它應該

取決於你下一步應該做什麼,但如果這是我的代碼,我正在運行到這些問題,我會努力解決這個問題,包括重構我的代碼,以便最終找到能夠再現問題的最小關鍵代碼。你可能會在調試過程中過早地過來,迫使你發佈「如果」情景,並且讓我們聳聳肩說「誰知道」。


編輯3
你問:

我必須指明它應該聽什麼地方呢?

您必須指定要收聽的組件組件。 MouseListeners監聽組件。但再一次,這只是更多的「如果」和「誰知道」... ...

+0

有道理,我會記住的。然而,我只問這個問題,不知道爲什麼它發生是因爲它似乎從來沒有進入mouseClicked鼠標監聽器。我在裏面放了一個println,但它從不打印。 – user2318083

+2

@ user2318083:同樣,根據您迄今爲止提供的信息,我可以說的是,您的代碼中存在一個尚未向我們顯示的錯誤。這是所有***任何人***在這一刻可以說的。考慮創建併發布[最小,完整和可驗證示例程序](http://stackoverflow.com/help/mcve)。 –

+0

好,所以我把'ActionListener'拿出來,只是運行'MouseListener',因爲我確定這個問題在那個範圍內。我有'mousePressed()'方法,它不打印任何內容。是因爲我沒有把它展示給它應該聽的地方嗎? – user2318083

相關問題