非常に長いモデルを実行する Java メソッドがあります。所要時間は約20分です。ボタンを押すと、モデルが完成するまでボタンが押されたままになります。押されたときにモデルの実行を停止するボタンを作成する必要があります。これまでのところ、停止と開始の 2 つのボタンがあります。私の問題は、開始ボタンを押すと、GUI のすべてのボタンがフリーズし、モデルが終了するまで押すことができないことです。
停止ボタンを作成するにはどうすればよいですか?
ありがとうございました、
イオナット
を使用する必要がありますSwingWorker
。これらは、進行状況レポートで GUI を更新しながら、長時間実行されるタスクを EDT から実行できるように特別に設計されています。
ボタンがクリックされたら、スレッドを開始することをお勧めします。スレッドがまだ終了していない場合は、スレッドを停止する停止ボタンを作成できます。ただし、このためには、スレッドを追跡する必要があります(たとえば、静的変数で)。
スレッド化のクイック ガイド: http://www.tutorialspoint.com/java/java_multithreading.htm
こちらもご覧ください: Javaでスレッドを適切に停止するには? .
ボタンのクリックに応答して 20 分間のタスクを実行する場合は、おそらくバックグラウンド スレッドで実行する必要があります。