在我的 swing 应用程序中,我有一个带有 ItemListener 的组合框,如果用户更改值(通过 itemStateChanged()),它会执行 X。 但是,我还有一个不同的函数可以更改该组合框的值。在这种情况下,我不希望完成 X。
有没有办法查明状态变化是由用户交互还是函数引起的?
谢谢!
编辑:我使用了标志方法。感谢您的快速解答。我只想补充一点,itemStatechanged 实际上被调用了两次,一次用于取消选择,一次用于选择。这需要处理,否则标志将不会有任何效果。问题讨论here .
最佳答案
有两种检查方法:
- 定义一个标志
isUser
。该标志默认为true
。在以编程方式更改之前将其设置为false
并在设置组合框值后重置。在监听器中,只需检查标志并在必要时跳过操作。 - 保留对监听器的引用并在设置值之前将其删除,之后添加。
关于java - 仅在用户交互后调用 itemStateChanged(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10329932/