在我的swing应用程序中,我有一个带有ItemListener的组合框,如果用户更改了值,则会执行X(通过itemStateChanged())。 但是,我也有一个不同的功能,可以更改该组合框的值。在这种情况下,我不希望X完成。
有没有办法找出状态变化是由用户交互还是从函数引起的?
谢谢!
编辑:我使用了flag方法。谢谢你的快速解答。我只想补充一点,itemStatechanged实际上被调用了两次,一次用于取消选择,一次用于选择。这需要处理,否则旗帜不会有任何影响。讨论了这个问题here。
答案 0 :(得分:6)
有两种方法可以进行检查:
isUser
。默认情况下,该标志为true
。在以编程方式更改之前,将其设置为false
并在设置组合框值后重置。在监听器中,只需检查标志并在必要时跳过操作。答案 1 :(得分:4)
根据我的理解,您可以使用旗帜轻松解决您的问题。
只需制作一个布尔标志,例如isDoneByMethod
将进入设置为true
且结尾设置为false
的方法,并在这两者之间对组合框执行操作。然后在itemStateChanged()
内检查isDoneByMethod
标志的值并采取相应的行动。