2011-03-16 88 views
1

我有一个JComboBox其中有多个值。我需要能够检测用户何时单击JComboBox但不会更改当前选定的项目。Java Swing和JComboBox事件

itemStateChanged也没有actionPerformed发生这种情况。

我应该使用什么事件?

回答

1

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

+0

我不认为这是正确的。用户可以点击并释放,然后从列表中选择一个项目。这似乎并不是OP所问的情况。 – Pops 2011-03-16 20:19:38

2

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

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

1

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

我会使用PopupMenuListener。这应该处理鼠标和键盘操作。这个概念与其他建议相同。显示弹出窗口时,保存选定的索引。什么时候关闭,你比较选定的索引,看它是否已经改变。

+0

这是一个好点。这绝对有可能可以使用键盘。 – user489041 2011-03-16 20:41:42

+1

如果这是您需要考虑的情况,则应更新您的问题。很少有人会在这里看到它作为对答案的评论。 – Pops 2011-03-16 23:23:28

0

我一直在寻找物品的右键点击,所以这是一个稍微不同的问题。 但对我的解决办法是

  1. 子类JComboBoxgetCellRenderer()与子类DefaultListCellRenderer

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

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