Swing正しいFrameの生成方法

良く見る誤りのパターン

mainメソッドでFrameのインスタンスを生成

public static void main(String args[]) {
  HogeFrame hoge = new HogeFrame();
  hoge.setVisible(true);
}

正しい生成方法

Swingのコンポーネントに関する処理は全てEDT上で行わなければなりません。mainメソッドが実行されるのはEDTではない為、mainメソッドでHogeFrameをnewするとSwingのシングルスレッド設計に反するコードとなるのです。したがって、EDT上でHogeFrameをnewする必要があります。

public static void main(String args[]) {
  java.awt.EventQueue.invokeLater(new Runnable() {
    public void run() {
      new HogeFrame().setVisible(true);
    }
  });
}
スポンサーリンク
google 6948682462
google 6948682462

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
google 6948682462