1

Jarファイルをエクスポートする方法を知っており、以前に何度も持っています。現在のプロジェクトでは、エクスポートして完全に実行できましたが、ボタンをクリックしてロードするたびに別の JFrame をプロジェクトに追加するとすぐに、JFrame はロードされず、代わりに JAR がフリーズします。クラッシュすることも何もありません。単にフリーズします。これはよくある問題ですか?それを修正するために何ができますか?

最初の JFrame

JFrame frame = new JFrame();

public Launcher(int id) {
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception e) {
        e.printStackTrace();
    }
    frame.setUndecorated(true);
    frame.setTitle("Launcher");
    frame.setSize(new Dimension(width, height));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(this);
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    frame.setVisible(true);
    window.setLayout(null);

2 番目の JFrame を開くコード

if (Input.Clicked == 1) {
    config.loadConfig("res/Config/config.xml");
    frame.dispose();
    new NewLauncher();

}

NewLauncher() のコード

    public NewLauncher() {

    Display app = new Display();
    JFrame frame = new JFrame();
    frame.add(app);
    frame.setSize(Display.getGameWidth(), Display.getGameHeight());
    frame.getContentPane();
    frame.setTitle(Display.TITLE);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    game.start();
    stopMenuThread();
}

EventQueue で編集

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable()
    {
       public void run()
       {
        new Launcher(0);
       }
    });
    //new Launcher(0);
}

コードはデバッガーとコンパイラーで正常に実行されます。まだ Jar で実行できません。正しく実行していますか?

4

1 に答える 1

1

イベントディスパッチスレッドでUIを実行していることを確認してください

EventQueue.invokeLater(new Runnable() {
 // Run your code here ...
});

ロックのスリープや待機など、イベント ディスパッチ スレッドで時間のかかるタスクを実行していないことを確認してください。

于 2012-09-28T04:56:15.710 に答える