Java Swing:如何区分用户触发的事件?

时间:2014-04-23 10:48:36

标签: java swing awt

我想从不应该触发更改事件的代码更新GUI元素(JComboBoxJLabel等)。是否可以从java.awt.event.ActionEventjava.awt.event.ItemEvent找出更改是由用户引起还是运行此类代码?

combo.setSelectedItem("my item")

2 个答案:

答案 0 :(得分:1)

答案是:不。

但在某些情况下,您可以尝试分析当前的InputEvent。要获得它,请使用EventQueue.getCurrentEvent()。例如,如果用户在单击另一个组件时触发了更改,则可以比较输入事件的组件和操作事件的组件(确定我知道:它不安全。但在某些情况下,它可以帮助避免增加应用程序复杂性)。

答案 1 :(得分:0)

对于按钮,您可以获取事件修饰符: int buttonModifiers = evt.getModifiers(); 如果通过调用doClick()生成按钮事件,则修饰符为0,否则不为。

顺便说一句,通过使用evt.toString()进行记录/打印,您可以相对轻松地找到这些差异