2013-02-03 146 views
-6

我想知道,Swing組件如何知道鼠標在何處以及何時被點擊,以及如何在自己的類中使用它,而無需每次添加新的鼠標偵聽器想要添加一個對象到新面板?Swing中的鼠標事件處理

編輯: 林擴展JComponent的,我想叫當鼠標移動 EDIT2事件方法: 明白了現在的工作感謝大家!

+0

因此,您想要什麼使您清楚地瞭解需求。我假設你正在向JPanel添加一個對象(很可能是你使用paintComponent繪製的,或者是一個圖像),並在該特定對象上使用鼠標監聽器? – exexzian

+0

從組件角度來看,您不能「共享」鼠標監聽器,因爲大多數組件本身並不實際使用它。您將需要製作您自己的監聽器並將其註冊到組件。這就是它的工作原理 – MadProgrammer

回答

2

添加一個ActionListener到您的JButton,它會告訴你它被點擊,像這樣的時候:

someButton.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e) { 
     //the button was pressed and do your stuff here. 
    } 
} 
+0

我不使用JButton,即時通訊使用我自己的類,我想繼承JPanel –

+0

的鼠標監聽器,然後在構造函數中執行:this.addMouseListener(..... –

+0

然後執行什麼操作give? –

2

how does the JButton know where the mouse is and when it clicked

那什麼聽衆是 - 它偵聽相應類型的事件

只是執行ActionListener並通過這樣做註冊給它的聽衆: jbutton.addActionListener(this); 現在,當你點擊按鈕,它就會產生,這將在這部分

public void actionPerformed(ActionEvent e){ 
    ... // handle event 
} 
+0

我知道,我希望能夠從JPanel接收鼠標事件,並且我沒有使用JButton類,我正在編寫自己的類 –

+0

It如果你用自定義類擴展JButton(最好的方法是imo),但仍然可以工作,但即使你不能使按鈕實現actionlistener ... – Jimmt

+3

*「..不使用JButton類」*這將解釋你爲什麼提到' JButton'在問題的標題和正文中。沒有等待,其他的事情..它完全***失敗***解釋爲什麼.. –