我有一个JComboBox
其中有多个值。我需要能够检测用户何时单击JComboBox
但不会更改当前选定的项目。Java Swing和JComboBox事件
itemStateChanged
也没有actionPerformed
发生这种情况。
我应该使用什么事件?
我有一个JComboBox
其中有多个值。我需要能够检测用户何时单击JComboBox
但不会更改当前选定的项目。Java Swing和JComboBox事件
itemStateChanged
也没有actionPerformed
发生这种情况。
我应该使用什么事件?
使用其addMouseListener
方法将MouseListener
添加到JComboBox
。您需要扩展MouseAdapter
并仅覆盖mouseClicked
方法。
如何按住鼠标按钮记录组合框的状态,并将其与释放鼠标按钮时该框的值进行比较?
MouseListener
到JComboBox
mousePressed()
method到框的状态记录到一个临时变量mouseReleased()
method到框的值进行比较,以临时变量的值在这一点上,这是一个简单的平等检查。
如果用户使用键盘打开弹出窗口,然后使用退出键关闭弹出窗口,该怎么办?
我会使用PopupMenuListener。这应该处理鼠标和键盘操作。这个概念与其他建议相同。显示弹出窗口时,保存选定的索引。什么时候关闭,你比较选定的索引,看它是否已经改变。
这是一个好点。这绝对有可能可以使用键盘。 – user489041 2011-03-16 20:41:42
如果这是您需要考虑的情况,则应更新您的问题。很少有人会在这里看到它作为对答案的评论。 – Pops 2011-03-16 23:23:28
我一直在寻找物品的右键点击,所以这是一个稍微不同的问题。 但对我的解决办法是
子类JComboBox
代getCellRenderer(
)与子类DefaultListCellRenderer
。
在具有boolean isSelected
,boolean cellHasFocus
参数,可以用于监视鼠标事件和执行list.setToolTipText()
单元格渲染截距getListCellRendererComponent()
。
我确定非最终选择更改会到达那里,它可以被拦截。
我不认为这是正确的。用户可以点击并释放,然后从列表中选择一个项目。这似乎并不是OP所问的情况。 – Pops 2011-03-16 20:19:38