java - 仅在用户交互后调用 itemStateChanged()

标签 java swing

在我的 swing 应用程序中,我有一个带有 ItemListener 的组合框,如果用户更改值(通过 itemStateChanged()),它会执行 X。 但是,我还有一个不同的函数可以更改该组合框的值。在这种情况下,我不希望完成 X。

有没有办法查明状态变化是由用户交互还是函数引起的?

谢谢!

编辑:我使用了标志方法。感谢您的快速解答。我只想补充一点,itemStatechanged 实际上被调用了两次,一次用于取消选择,一次用于选择。这需要处理,否则标志将不会有任何效果。问题讨论here .

最佳答案

有两种检查方法:

  1. 定义一个标志isUser。该标志默认为 true。在以编程方式更改之前将其设置为 false 并在设置组合框值后重置。在监听器中,只需检查标志并在必要时跳过操作。
  2. 保留对监听器的引用并在设置值之前将其删除,之后添加。

关于java - 仅在用户交互后调用 itemStateChanged(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10329932/

相关文章:

java - 单击另一个单元格时更改单元格背景

java - Spring Data java 配置找不到 org.postgresql.Driver

Java:从缓冲图像中获取 RGBA 作为整数数组

java - 在 cassandra 中创建计数器列族?

java - 将图像加载到 JPanel 不起作用

java - 有没有基于扁平化设计理念的java look and feel?

java - 如何在按下按钮时添加不同类别的面板

java - 在我的登录 JPanel 中添加 KeyListener

Java:小程序有哪些可用的安全设置

java - 访问另一个类中的方法