2012-03-21 116 views
3

我有一個名爲Menu的菜單類,它定義了一個JFrame,這個類實例化了兩個包含文本字段和按鈕的JPanel對象。每個JPanel擴展類中都有一個私有的內部類,它處理按下按鈕觸發的事件。Swing組件事件處理程序

我想知道是否有一種方法讓Menu類從JPanel內部的按鈕中檢測觸發事件。

你可以在Menu類中的JPanel中添加一個監聽器並執行類似的操作嗎? :

if(event.getSource() == panel.getButton1()){ 
    //do button1 code 
} 

回答

3

JPanels和事實上所有Swing組件都有屬性更改支持,因此您可以輕鬆地將PropertyChangeListener添加到任何組件並偵聽狀態更改。只要確保在狀態發生變化後狀態發生變化的代碼中調用firePropertyChange(...)即可。

1

您可以隨時將偵聽器添加到組件(例如ActionListener實例)並處理它們。

在設計方面,您應該考慮拆分菜單/佈局和事件處理,即使用單獨的控制器來偵聽事件並處理它們。