2010-09-17 39 views
2

如果我在JFrame上實現了一個動作事件,它有一些按鈕,它給我 通過getSource點擊的按鈕,但如果我在同一個框架上實現鼠標事件 它不會引起我的按鈕事件,但只爲那JFrame在AWT事件模型中冒泡?

爲什麼?

事件冒泡似乎只適用於動作事件,因此Swing實現了什麼模型?

哪種聽衆類型以冒泡的方式工作?

+0

我給Action添加了一個ActionListener或者一個MouseListener到按鈕,那麼事件的來源就是這個按鈕。如果您獲得了不同的結果,請發佈您的SSCCE(http://sscce.org)來證明問題,因爲問題出在您的代碼上,我們無法猜測您可能會做錯什麼。 – camickr 2010-09-17 16:04:16

+0

交叉發佈到http://groups.google.com/group/comp.lang.java.programmer/browse_frm/thread/8cd7b17672d24caa – trashgod 2010-09-18 14:36:05

回答

2

在AWT中冒泡的事件僅適用於鼠標事件,並且只有在子組件上沒有鼠標偵聽器時才適用。

如果您有一個JComboBox,這通常由PL & F帶有一個文本字段和一個按鈕組件來實現,這可能會讓您非常困惑。你可能想查找「玻璃窗格」。

我建議儘可能忽略遏制層次結構。還要創建知道其上下文和點使用getSource的聽衆。並且不要不必要地擴展類(如JFrame,JPanelThread)。

+0

但點擊按鈕是一個ActionEvent ... – xdevel2000 2010-09-17 15:53:12

+0

@ xdevel2000 JFrame'確實沒有'addActionListener'。 – 2010-09-19 13:17:34