2010-10-08 37 views
1

消耗我有這樣的框架:允許家長來處理鼠標事件,如果事件沒有被孩子

alt text

這裏是發生了什麼:

  1. 當我在粉紅色的面板,滾動窗格工作得很好。
  2. 當我把鼠標放在深灰色JTextArea滾動窗格不會得到事件。

一般來說,我的問題是,如果組件的父節點沒有處理該特定事件(即使組件具有偵聽器並且已啓用),如何確保組件的父節點接收事件?

也許一個具體的例子會做。

您可以看到計算器,計算器在可縮放的圖像面板上繪製,並且可以通過Ctrl + Wheel事件放大和縮小,但是當我不按Ctrl時,我希望滾動窗格可以接收該事件並滾動視圖端口。 (我認爲這是總結它)

亞當。

+0

我可以抓住JScrollPane的聽衆和這些添加到每個面板,但我正在尋找一個更廣義妥善的解決辦法,而不是讓組件層次結構中的混亂和只能在一種情況下工作的監聽器。 – TacB0sS 2010-10-08 05:33:45

回答

0

正如我在我的評論描述,它工作正常...

1

雖然不完全「整潔」,但我的answer in this question可能適合做你想做的事。

而不是MOUSE_EVENT_MASK你會使用AWTEvent.MOUSE_WHEEL_EVENT_MASK,並在適當的控制鍵狀態時將事件傳遞給滾動窗格。

(如果有人會發布「真實」機制將事件轉發給父組件)。

+0

沒有我想到的,我會看到我是如何做到這一點的......感謝這個想法。 – TacB0sS 2010-10-08 10:46:00