2017-04-17 21 views
3

このプログラムを作成していますので、リセットボタンをクリックするとプログラムが閉じられ、新しいプログラムが開始されますが、これを行う方法はわかりませんそれは:/ここにボタン用のコードです。このコードは基本的に最初のプログラムを終了しますが、新しいアプリケーションでは再び開きません。Java:リセットボタンが機能しません

button1.addActionListener(new ActionListener() { 
        @Override 
        public void actionPerformed(ActionEvent e) { 


         System.exit(0); 
         new Tests(); 
        } 

       }); 
+1

'System.exit(0)'はすべてを殺します。その後の行には到達できません。行を入れ替えると、 'System.exit(0)'以外のものを使う必要があります。 – Socowi

+1

'System.exit(0);'はVM全体の強制終了を強制します。その後すぐに割り当てたものは単に破棄されます。 –

+0

あなたは何か「離散」を行うべきです。 –

答えて

4

このコードは、基本的に第1のプログラムを終了しますが、それは、新しいアプリケーションに再度 を開きません。

System.exit(0);は、現在のJVMプロセスを終了します。 すべての命令は実行されません。

アプリケーションを再起動する場合は、アプリケーションのJVMを起動するコマンドを実行する必要があります。それが瓶の場合:java -jar yourJar -cp yourClasspathProcessBuilderインスタンスで実現できます。

もう1つの方法は、アプリケーションを再起動するのではなく、アプリケーションの状態を初期状態に設定することです。

+0

hmm Idkどのようにこのリセットを行うには:/私は何を助けてください –

+1

広範にあなたは2つの方法があります:私は更新しました。 – davidxxx

+0

ええ、私はそのplzの例を提供することができます:) –

2

System.exit(0);は、プログラム全体を強制終了します。あなたが本当に完了するまでそれを使用しないでください。

プログラム全体(少なくとも再実行したい部分)をループに入れたいと思うでしょう。リセットボタンをクリックすると、ループの先頭(またはどこでも)に戻ってきます。ループを終了させるための終了条件を覚えておいてください。さもなければ、それは永遠に続くでしょう。

+0

whileは真(true)//コードを実行します(false)。 –

+0

(真)はあなたをする一つの方法です。より良い方法は、実際にあなたの条件をwhileループに持たせることです。 if(false)と言っているときは決して実行されないので、わかりません。 – coinbird

関連する問題