2011-04-11 53 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而不使用鼠标滚轮的方式。