簡體   English   中英

如何釋放按下的Java按鈕

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM