繁体   English   中英

Java Swing和JComboBox事件

[英]Java Swing and JComboBox Events

我有一个JComboBox有多个值。 我需要能够检测用户何时单击JComboBox但不更改当前选定的项目。

发生这种情况时, itemStateChangedactionPerformed都不会触发。

我应该使用什么事件?

如何在按下鼠标按钮时记录组合框的状态,并将其与释放鼠标按钮时盒子的值进行比较?

在这一点上,这是一个简单的相等检查。

使用addMouseListener方法将MouseListener添加到JComboBox 您将需要扩展MouseAdapter并仅覆盖mouseClicked方法。

如果用户使用键盘打开弹出窗口,然后使用转义键关闭弹出窗口,该怎么办?

我会使用PopupMenuListener。 这应该处理鼠标和键盘操作。 这个概念与其他建议相同。 显示弹出窗口时,保存选定的索引。 何时关闭,您将比较所选索引以查看它已更改。

我特意看右键点击项目,所以这是一个稍微不同的问题。 但我的解决方案是

  1. 子类JComboBox用子类DefaultListCellRenderer替换getCellRenderer( )。

  2. 在单元格渲染器中拦截getListCellRendererComponent() ,它具有boolean isSelectedboolean cellHasFocus参数,可用于监视鼠标事件并执行list.setToolTipText()

我确信非最终选择更改将会到达那里,它可以被截获。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM