1

特定の場合に次のことが機能しない理由を突き止めようと、私は髪を引っ張っています。

public static void main(String[] str) {
    new Window(new DatabaseManager());
}

この正確なコードを 2 つのクラスで実行すると、2 つの異なる結果が得られます。Windowクラス自体から実行すると、完全に機能します。別のクラスから実行すると、すべてのウィンドウ コンポーネントが読み込まれません。

これはメモリ関連の問題ですか?Window オブジェクトに変数名を割り当てようとしましたが、役に立ちませんでした。必要に応じてさらに説明していただければ幸いです。

Windowそれが重要な場合に備えて、JFrameです。(内部には多くのコンポーネントがあり、多くの処理能力(画像のロード)を消費する奇妙なアルゴリズムによって追加されます。)

編集 とにかく、EDT にリクエストを処理する時間を与えることができますか? EDIT2 わかり ましたので、私がしたことは、Window完全に機能するため、クラス内のすべてを実行することにしました (そこでメインメソッドを作成しました)。十分に訓練されていないスレッドについて、まだ学ぶべきことがたくさんあります。今はすべて順調です:)

4

1 に答える 1

3

メインメソッド内で次を試してください(イベントディスパッチスレッド+ setVisible)

Runnable doHelloWorld = new Runnable() {
     public void run() {
         Window w = new Window(new DatabaseManager());
         w.pack();
         w.setVisible(true);
     }
 };

 SwingUtilities.invokeLater(doHelloWorld);
于 2013-06-12T23:37:14.227 に答える