良く見る誤りのパターン
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);
}
});
}