相关疑难解决方法(0)

构建Swing/AWT小部件不是在Event Dispatch Thread上安全吗?

我一直在将Substance的外观和感觉整合到我的应用程序中,并遇到了几个关于它的内部EDT(事件调度线程)检查例程的问题.Substance绝对拒绝在EDT之外构建UI类.我已经做了很多Swing/AWT,我知道关于EDT的大部分规则.我使用SwingWorker,SwingUtilties.invokeLater来修改组件.我总是认为组件可以在EDT之外构建,但必须在EDT上实现操作.换句话说,您可以在后台构造和设置默认值,但对pack/setVisible的调用必须是EDT以及操作组件的任何后续调用.

我问的原因是我有一个特别"强大"的窗口来构建,涉及许多小部件,状态和资源(许多图标).以前,我在SwingWorker的背景方法上构建了窗口,并在done方法中使窗口可见.从来没有一个问题.切换到Substance后,内部EDT检查会让我感到困惑.

我已经能够重构代码来解决这个问题.我可以在EDT上构建这不是一个好的解决方案,因为整个应用程序将阻止.我还可以进行更多的重构,并尽力在EDT之外加载所有额外的资源.

把它包装起来...... 构建 Swing/AWT小部件不是在Event Dispatch Thread上安全吗?

java user-interface swing multithreading awt

33
推荐指数
2
解决办法
5634
查看次数

标签 统计

awt ×1

java ×1

multithreading ×1

swing ×1

user-interface ×1