Java Swing和JComboBox事件

Java Swing和JComboBox事件,java,swing,jcombobox,Java,Swing,Jcombobox,我有一个JComboBox,里面有多个值。我需要能够检测用户何时单击JComboBox,但不更改当前选择的项目 发生这种情况时,itemStateChanged和actionPerformed都不会激发 我应该使用什么事件?使用AddMouseStener方法将MouseStener添加到JComboBox。您需要扩展MouseAdapter并仅覆盖mouseClicked方法。使用其AddMouseStener方法将MouseStener添加到JComboBox。您需要扩展MouseAdapt

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

发生这种情况时,itemStateChanged和actionPerformed都不会激发


我应该使用什么事件?

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

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

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

连接到JComboBox 重写以将框的状态记录到临时变量 重写以将框的值与临时变量的值进行比较
此时,这是一个简单的相等性检查。

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

连接到JComboBox 重写以将框的状态记录到临时变量 重写以将框的值与临时变量的值进行比较
在这一点上,这是一个简单的平等性检查。

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


我会用PopupMenuListener。这将处理鼠标和键盘操作。这一概念将与其他建议相同。当弹出窗口显示时,保存所选索引。当is关闭时,您可以比较所选索引以查看它是否已更改。

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


我会用PopupMenuListener。这将处理鼠标和键盘操作。这一概念将与其他建议相同。当弹出窗口显示时,保存所选索引。当is关闭时,您可以比较所选索引以查看它是否已更改。

我特别关注的是鼠标右键单击项目,因此这是一个稍微不同的问题。 但我的解决办法是

子类JComboBox使用子类DefaultListCellRenderer替换getCellRenderer

在单元渲染器中,截取GetListCellRenderComponent,该组件具有布尔isSelected、布尔cellHasFocus参数,可用于监视鼠标事件和do list.setToolTipText


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

我特别关注的是鼠标右键单击项目,所以这是一个稍微不同的问题。 但我的解决办法是

子类JComboBox使用子类DefaultListCellRenderer替换getCellRenderer

在单元渲染器中,截取GetListCellRenderComponent,该组件具有布尔isSelected、布尔cellHasFocus参数,可用于监视鼠标事件和do list.setToolTipText


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

我认为这不太正确。用户可以单击并释放,然后从列表中选择一个项目。这似乎不是OP询问的情况。我认为这不太正确。用户可以单击并释放,然后从列表中选择一个项目。这似乎不是OP询问的情况,这是一个很好的观点。键盘绝对有可能被使用。如果这是你需要解释的情况,你应该更新你的问题。很少有人会把它看作是对答案的评论。这是一个好观点。键盘绝对有可能被使用。如果这是你需要解释的情况,你应该更新你的问题。很少有人会把它看作是对答案的评论。