![](/img/trans.png)
[英]How can I run a function while a button pressed until release button in java application?
[英]How to release a pressed java button
我有執行非常長的模型的java方法。 大約需要20分鍾。 當我按下按鈕時,按鈕保持按下狀態,直到模型完成。 我需要創建一個按鈕,當按下該按鈕時,它將停止模型執行。到目前為止,我有2個按鈕:“停止”和“啟動”。 我的問題是,當我按下開始按鈕時,GUI中的所有按鈕都被凍結,並且在模型完成之前無法按下它們
如何創建停止按鈕?
謝謝,
約努茨
您應該使用SwingWorker
。 它們是專門為在EDT之外執行長時間運行的任務而設計的 ,同時仍然能夠使用進度報告來更新GUI。
最好在單擊按鈕后啟動一個線程。 您可以創建一個停止按鈕,以在線程尚未完成時將其停止。 為此,您將必須跟蹤線程(例如,在靜態變量中)。
線程快速指南: http : //www.tutorialspoint.com/java/java_multithreading.htm
請同時看一下: 如何正確停止Java中的線程? 。
如果您正在執行20分鍾的任務以響應按鈕單擊,則您可能應該在后台線程中執行該任務。
您必須使用多線程。 一個基本的例子
public class ThreadTest {
private int getSum(int x, int y){
return x + y;
}
public static void main(String args[]) {
ThreadTest tTest = new ThreadTest();
System.out.println(tTest.getSum(2, 5));
// Start the thread
new LongProcess().start();
// Since the thread sleeps for two seconds
// You will see 5 + 5 = 10 before Done! gets printed out
System.out.println(tTest.getSum(5, 5));
}
}
class LongProcess extends Thread {
public LongProcess(){
System.out.println("Thread started..");
}
public void run() {
try{
Thread.sleep(2000);
System.out.println("Done!");
} catch(InterruptedException iEx){
System.out.println(iEx.toString());
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.