java - 在 JComboBox 弹出窗口上滚动将其隐藏

标签 java swing jcombobox mousewheel

我的客户提示说,当在没有垂直滚动条的 JComboBox 弹出窗口上使用滚动时,JComboBox 弹出窗口经常关闭。 (他似乎不小心使用了滚动,因为他使用的是 Apple Magic Mouse。)

有什么办法可以防止这种情况发生?

我知道它与 ComboBoxUI 有关,但我想知道从哪里开始。 BasicComboPopup.handler 是私有(private)的(不可重用),我没有看到任何与 BasicComboPopup 中的任何 MouseWhellListener 相关的代码。

最佳答案

source 中所示, BasicPopupMenuUI包含一个嵌套类 MouseGrabber,它实现了 AWTEventListener 接口(interface)。在 eventDispatched() 中接收到 MouseEvent.MOUSE_WHEEL 作为 isInPopup() 的函数取消弹出窗口。我不知道有什么简单的方法可以阻止这种行为。

根据经验,这 example调用 show()来自 JButtonactionPerformed() 处理程序;鼠标滚轮事件被忽略。对于您的用户来说,这可能是一个合理的替代方案,可能与合适的 ActionEvent 修饰符掩码结合使用。

相比之下,这个 example调用 show()回应isPopupTrigger()MouseAdapter 中;正如预期的那样,鼠标滚轮事件取消了弹出窗口。

关于java - 在 JComboBox 弹出窗口上滚动将其隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5639762/

相关文章:

java - 如何找到给定 this 的最大模数

java - 使用 GUI 的 JFrame 会取消 Scanner 类吗?

Java - 如何为 JButton 应用 3 个键的键盘快捷键?

java - java中数据库表更新时如何立即更新jcombobox

java - 单击打开 JComboBox 时 JTable 单元格丢失值

java - org.apache.commons.lang3.StringUtils 与 org.apache.logging.log4j.util.Strings

java - 我需要了解如何从数据库中获取唯一的随机行

java - 我们如何在 Liquibase XML changlelog 中使用 xinclude ?

java - 单击按钮时修改变量/其他 Swing 对象

java - 如何限制JComboBox中的可编辑文本?