2010-09-14 29 views
3

我讀到一個JButton實現ItemSelectable並進入文檔它具有方法addItemListener所以可以說,它可以產生一個ItemEvent ...但是,當我與JButton(也爲一JMenuItem),該接口寄存器事件沒有上升?itemStateChanged上的JButton

爲什麼?

我明白,如果到文檔報道,一個組件都有一個附加....監聽器就意味着它支持該事件,而是爲了體驗是不是經常這樣...

有什麼真相?

+0

你在找什麼事件? ItemListener接口中只有一個名爲itemStateChanged(ItemEvent iEvent)的事件。這是不是正在發射的事件? – Koekiebox 2010-09-14 12:29:18

+0

是的,ItemEvent沒有被解僱。 – xdevel2000 2010-09-14 12:36:24

回答

3

「按下」按鈕(觸發ActionEvent)和「選擇」按鈕(觸發ItemEvent)之間存在差異。默認情況下,JButtonjavax.swing.DefaultButtonModel支持。如果您在默認按鈕模型中查看setPressedsetSelected方法,您將看到觸發不同事件的代碼。

所以,如果你編程呼叫JButton.setSelected,你的物品監聽器將被解僱。如果你點擊按鈕,你只會得到行動事件。

還要注意的是,對於JButton(不同於比如說,JToggleButton),在選擇它時可能不會在視覺上看到太多東西。