JFrame を拡張するメイン クラスがあります。
JTable およびその他の Swing コンポーネントで構成されるフレームのこのインスタンスにパネルを追加します。
この「public static void main」のメインクラスに、swing イベントディスパッチスレッドを設定します。
このインスタンス フレームにパネルを追加し、以下を開始します。
this.setTitle("Test");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
等...
ここまでは大丈夫です。
現在、JTable にはリスナーがあり、行をクリックするとクラス InfoDialog の新しいインスタンスが開きます。
この InfoDialog で、通常どおり Swing コンポーネントを追加します。
JDialog に次のような別のディスパッチ スレッドがあります。
class InfoDialog {
JDialog jd;
public void initGUI() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jd = new JDialog();
jd.setModalityType(ModalityType.APPLICATION_MODAL);
jd.setTitle("Buy");
jd.setDefaultCloseOperation(jd.DISPOSE_ON_CLOSE);
jd.pack();
jd.setLocationRelativeTo(null);
jd.setVisible(true);
}});
}
}
イベントディスパッチスレッドを配置すると、発生しているエラーが解決されます (おそらく、以前に現在のスレッドがブロックされたためです)。私の質問は、これが正しい方法ですか?
アドバイスをありがとう。