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

Nik*_*sMM 4 java swing

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

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

谢谢!

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

Sta*_*avL 6

有两种方法可以检查:

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