私は次のアプローチを使用してコンポーネントを作成し、Swing から EDT の外部へ/から値を返します。たとえば、次のメソッドは を拡張してJFrame
、 を作成し、JPanel
それを親に追加でき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];
}
Runnable
ローカルの長さ 1 の配列は、EDT で呼び出される内から「結果」を転送するために使用されます。まあ、それは「少し」ハックに見えるので、私の質問:
- これは理にかなっていますか?他の誰かがこのようなことをしていますか?
- 長さ 1 の配列は、結果を転送する良い方法ですか?
- これを行う簡単な方法はありますか?