[英]Java Swing and JComboBox Events
我有一个JComboBox
有多个值。 我需要能够检测用户何时单击JComboBox
但不更改当前选定的项目。
发生这种情况时, itemStateChanged
和actionPerformed
都不会触发。
我应该使用什么事件?
如何在按下鼠标按钮时记录组合框的状态,并将其与释放鼠标按钮时盒子的值进行比较?
MouseListener
附加到JComboBox
mousePressed()
方法 ,将盒子的状态记录到临时变量 mouseReleased()
方法 ,将框的值与临时变量的值进行比较 在这一点上,这是一个简单的相等检查。
使用addMouseListener
方法将MouseListener
添加到JComboBox
。 您将需要扩展MouseAdapter
并仅覆盖mouseClicked
方法。
如果用户使用键盘打开弹出窗口,然后使用转义键关闭弹出窗口,该怎么办?
我会使用PopupMenuListener。 这应该处理鼠标和键盘操作。 这个概念与其他建议相同。 显示弹出窗口时,保存选定的索引。 何时关闭,您将比较所选索引以查看它已更改。
我特意看右键点击项目,所以这是一个稍微不同的问题。 但我的解决方案是
子类JComboBox
用子类DefaultListCellRenderer
替换getCellRenderer(
)。
在单元格渲染器中拦截getListCellRendererComponent()
,它具有boolean isSelected
, boolean cellHasFocus
参数,可用于监视鼠标事件并执行list.setToolTipText()
。
我确信非最终选择更改将会到达那里,它可以被截获。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.