我一直在使用以下方法来创建组件并从 Swing 向/从 EDT 外部返回值。例如,以下方法可以是 , 的扩展JFrame
,以创建 aJPanel
并将其添加到 parent JFrame
:
public JPanel threadSafeAddPanel() {
final JPanel[] jPanel = new JPanel[1];
try {
EventQueue.invokeAndWait(new Runnable() {
public void run() {
jPanel[0] = new JPanel();
add(jPanel[0]);
}
});
} catch (InterruptedException ex) {
} catch (InvocationTargetException ex) {
}
return jPanel[0];
}
本地 1 长度数组用于从Runnable
EDT 中调用的内部传输“结果”。好吧,它看起来“有点” hacky,所以我的问题是:
- 这有意义吗?还有其他人在做这样的事情吗?
- 1-length 数组是传输结果的好方法吗?
- 有没有更简单的方法来做到这一点?