2012-11-12 93 views
0

現在,當我有一個包含許多JComponents的表單時,主要有JTextFields,JTextAreas,JComboboxes,JCheckBoxes和JButtons,並且想要控制它們的行爲,例如某個鍵釋放後焦點的變化,我執行以下操作:與JComponents形式的聽衆

我將所有組件放在JComponent []中並循環,添加適當的偵聽器。當一個事件被所述監聽器註冊時,我用「instanceof」來檢查JComponent是什麼類型的事件並分配適當的反應。

我使用這個方法來實例在VK_ENTER通過窗體循環,或者在DocumentListener觸發之後循環到「firePropertyChange(..)」,或者添加UndoRedoListeners等等。

我的問題:有沒有更好的方法來做到這一點,如果是的話,你能向我解釋好處嗎?

+1

如果['FocusManager'](http://docs.oracle.com/javase/7/docs/api/javax/swing/FocusManager.html)是不是答案,我不明白這個問題。 –

+0

FocusManager是一個很好的提示,但我的問題涉及將所有JComponents放入數組並循環遍歷每個偵聽器和每個觸發事件的一般做法。它工作得很好,但感覺有點「不經濟」,所以我想知道是否推薦練習,或者有更好的方法。 –

+0

聽起來像你在做什麼_basically_ wrong(從來沒有感受到這樣的願望/需要)退一步說明你想達到的目標(描述感知解決方案的問題) – kleopatra

回答

1

但我的問題是指把數組中的所有 JComponents和騎自行車通過他們爲每一個聽衆 和每一個觸發事件的一般做法。它工作得不錯,但它感覺有點「不經濟」,所以我想知道這是否是推薦的做法,或者如果有更好的方法做到這一點。

我通常爲每個類型/實例編寫一個自定義偵聽器(通常是一個匿名類),如果我具有類型/實例特定的行爲,以便我可以避免instanceof和其他檢查。