2011-04-11 81 views
0

這裏的問題是:說明這個問題

的方式我使用作品的GUI系統如下:

一個widget可以聽鼠標事件。偵聽器可以使用他們正在偵聽的事件,因此,他們正在偵聽的小部件將不會收到事件,即使是針對他們的,只有偵聽器纔會收到事件。

,問題就來這裏:

一個ScrollPane內部有一個列表框。列表框可以滾動。滾動窗格也可以滾動。現在發生的事情是,當鼠標滾輪和鼠標下的控件是列表框時,列表框和滾動窗格都會移動。我看到的唯一解決方案是滾動窗格消耗所有鼠標滾輪事件,但是隨後無法滾動列表框。

我期望的行爲是在ListBox滾動時它具有焦點,但如果我這樣做,它不會工作,因爲例如,如果滾動窗格內的單選按鈕集中,我仍然希望滾動窗格滾動,它只適用於帶有滾動條的窗口小部件,例如文本框和列表框,這些不是必需的。

感謝

另外,我使用的GUI系統是我自己的,我正在開發。

+2

您正在開發Java,.NET,**和** C++的GUI系統嗎? – 2011-04-11 15:25:53

+0

不,解決方案所使用的語言對我來說不是問題,我是用C++來完成的,但校長是一樣的。 – jmasterx 2011-04-11 15:30:35

+1

詹姆斯指的是你的標籤,這是可怕的誤導 – AJG85 2011-04-11 15:35:06

回答

0

解決此問題的常用方法是ListBox僅消耗事件,如果它實際上滾動。如果將鼠標放在列表框中並使用滾輪,則列表框滾動直至達到滾動限制。之後,輪子的進一步移動導致滾動窗格滾動。

很明顯,在這方面有變種 - 重要的是要決定你真正想要發生的事情。

您還需要另一種滾動滾動窗格的方式,以便如果用戶明確要滾動滾動窗格,則可以不必滾動到ListBox的末尾。 ScrollPane上的滾動條將是一種方式。您還應該確保有一種滾動ListBox而不使用鼠標滾輪的方式。