java - Swing:在不触发回调的情况下以编程方式修改 UI

标签 java swing callback notifications

如果您理所当然地认为您需要以编程方式修改 UI 的元素,例如 JComboBox 的选定项而不触发任何修改/通知事件,那么如何相对干净地进行修改?

当然,我可以分离所有的监听器,然后在我修改了我想要修改的内容后重新附加它们,但通常情况下,应该如何做到这一点? (再一次,考虑到应该修改某些元素并且认为这些修改不应触发任何回调是理所当然的)。

P.S:我确实是通过编写实际分离所有监听器、执行修改、然后重新附加所有监听器的方法来做到这一点的,它确实有效,但对我来说似乎有点糟糕。

最佳答案

通常,问题不在于所有听众,而在于一个——我们自己的听众。忽略此类事件的典型模式如下:

private boolean ignoreEvents;

public void initialize(...) {
   ignoreEvents = true;
   try {
      // set the combobox value
   }
   finally {
      ignoreEvents = false;
   }
}

private void processMyXyEvent(...) {
   if (ignoreEvents) {
      return;
   }

   // listener code
}

关于java - Swing:在不触发回调的情况下以编程方式修改 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4317918/

相关文章:

java - 无法解决依赖项版本冲突(NoSuchMethodError's)

java - xtext,内容协助不需要的建议

Java - 正则表达式 - 捕获 ""之间的组

java - 使用 Windows 事件关闭 JFrame

Java Swing 容器不会出现

java - Android 5.0 Lollipop 中的 mediaPlayer,我无法播放,来自 url 的长声音。在 Android 5.0 到来之前我从未遇到过任何问题

java - Spring:调用 new ClassPathXmlApplicationContext() 时出现 FileNotFoundException

swing - 为什么当主框架关闭时 Scala Swing 应用程序不退出?

c# - 如何从 C# 调用和处理异步 F# 工作流

c++ - 如何将某个类的指针方法转换为指针函数?