我正在做一个桌面应用程序,当用户点击或选择JComboBox
的特定项目(以免" SHOW.DIALOG.ITEM")触发打开的监听器时我需要它我用来配置该项目的新JDialog
。 1中的代码显示了我如何使用ItemListener
进行操作,并且在显示JDialog
时效果很好。在我加载组合框的值的应用程序的另一部分(参见代码2)我设置为JComboBox
所选值是显示对话框和诅咒的特定项,它显示对话框到用户,因为组合框有ItemListener
和if()条件,但问题是在我的应用程序中我不希望在那一刻发生这种行为,我只想在用户选择时才发生组合框中的项目。这就是我尝试添加OnClickMouse
侦听器而不是ItemListener
的原因,因为我相信这可能会解决我的问题,但我找不到如何将鼠标侦听器添加到comboBox
像我想要的那样工作(我已尝试使用addMouseListener
onClick
MouseAdapter
,但它无法显示对话框)。如果有人更好地了解我应该如何做到这一点,或者如何向模仿所需行为的OnMouseClick
添加comboBox
侦听器,那将非常有用。感谢
1)在选择项目
后,向comboBox
添加项目监听器<{1}}
dialog
2)设置comboBox.addItemListener(e -> {
if (ItemEvent.SELECTED == e.getStateChange()) {
String valueAfterSelection = e.getItem().toString();
if (valueAfterSelection.equalsIgnoreCase("SHOW.DIALOG.ITEM")) {
dialog.setVisible(true);
}
}
}
特定项目(打开对话框,我不希望在那一刻发生这种情况)
comboBox
答案 0 :(得分:1)
您可以在更改选择之前始终删除侦听器:
comboBox.removeItemListener(...);
comboBox.setSelectedItem(value);
comboBox.addItemListener(...);
这意味着您需要在创建时保留对侦听器的引用,以便您可以根据需要轻松删除/添加。