当前位置: 首页 > 面试题库 >

JCombobox-仅在值更改时执行actionlistener

曹君墨
2023-03-14
问题内容

我有一个JComboBox,并且有一个侦听器连接到它。

现在,即使用户只是重新选择了先前选择的值,每次用户从下拉菜单中“选择”某项时,事件都会触发。

如果组合框的选定值与选定前的值不同,有什么方法可以仅触发事件?

我想我可以将组合框的值存储在不同的字段中,并在每次事件触发时将其进行比较,这似乎有点过头了。我有20个左右这样的组合框。我宁愿不要再有20个变量来存储值,这样事件就不会触发。

一定有更好的方法。

谢谢您的帮助!


问题答案:

您是否考虑过使用ItemListener而不是ActionListener?

 JComboBox<String> cb = new JComboBox<>(new String[] {"Stack", "Over", "Flow"});
 cb.addItemListener(new ItemListener() {
     @Override
     public void itemStateChanged(ItemEvent e) {
         System.out.println("Change");
     }
 });

它触发两次,因为一项被取消选择,另一项被选择。两者均触发事件。您可以致电来检查发生了哪一种情况e.getStateChange()



 类似资料:
  • 问题内容: 我在SQL Server中运行合并。在我的更新中,我只想更新值已更改的行。版本行在每次更新时都会递增。下面是一个示例: 现在,如果我只想更新行,从而增加版本,则仅在名称更改的情况下。 问题答案: 可以有。另外,无需更新。 如果Last_Name或First_Name可为空,则例如在比较trg.Last_Name <> src.Last_Name时,需要注意值。

  • 数组仍然具有它的原始值,是否有任何方法可以通过迭代函数对数组的元素进行写访问?

  • 问题内容: 我正在尝试结合2个jcombobox。1个组合框用于显示费用类别。第二个组合框正在从文本文件读取文件以显示产品类型。如果我更改第一个组合框,我希望第二个组合框将根据用户在第一个组合框中的选择进行更改。 我是否仍有可能从文本文件加载其他组合框?该子项将不是Arrays,而是与以前相同,因为它位于cboperson代码的底部。 编辑的代码: 问题答案: 例如

  • 我想使“onedit”仅在值已更改的工作表上工作。 [sheet1]如果在第7列中输入值,则需要在[sheet1]第6列中写入时间 或[sheet2]如果在第7列中输入值,则希望在[sheet2]第6列中写入时间。 不要在[sheet5]上工作。 但是时间也出现在我不想要的[表2]和[表3]中。 请帮帮我。

  • 我试图在点击组合框时获取当前行数据。我的问题是,如果我试图在单击组合框时获取详细信息,则检索到的数据是错误的。 这是在集合中填充无效数据。请按照下面提到的确切步骤进行复制。 请运行代码以复制该问题,因为它只在初始选择期间工作,而不是之后。 注意:请仅在第二列中单击“直接” 下面是示例代码:

  • 问题内容: 我正在从数据库中成功获取数据值。我也将它们存储到一个数组中。我需要将String数组作为项的加载,以响应执行的关键操作。每当获取按键值时,如何获取按键值,就如何重新加载项目。相反,我需要动态刷新项目。 问题答案: