我的客户提示说,当在没有垂直滚动条的 JComboBox 弹出窗口上使用滚动时,JComboBox 弹出窗口经常关闭。 (他似乎不小心使用了滚动,因为他使用的是 Apple Magic Mouse。)
有什么办法可以防止这种情况发生?
我知道它与 ComboBoxUI 有关,但我想知道从哪里开始。 BasicComboPopup.handler 是私有(private)的(不可重用),我没有看到任何与 BasicComboPopup 中的任何 MouseWhellListener 相关的代码。
最佳答案
如 source 中所示, BasicPopupMenuUI
包含一个嵌套类 MouseGrabber
,它实现了 AWTEventListener
接口(interface)。在 eventDispatched()
中接收到 MouseEvent.MOUSE_WHEEL
作为 isInPopup()
的函数取消弹出窗口。我不知道有什么简单的方法可以阻止这种行为。
根据经验,这 example调用 show()
来自 JButton
的 actionPerformed()
处理程序;鼠标滚轮事件被忽略。对于您的用户来说,这可能是一个合理的替代方案,可能与合适的 ActionEvent
修饰符掩码结合使用。
相比之下,这个 example调用 show()
回应isPopupTrigger()
在 MouseAdapter
中;正如预期的那样,鼠标滚轮事件取消了弹出窗口。
关于java - 在 JComboBox 弹出窗口上滚动将其隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5639762/