【问题标题】:SwingWorker get not finishingSwingWorker 没有完成
【发布时间】:2017-09-15 19:37:39
【问题描述】:

我最近一直在使用相当多的 SwingWorkers,并且遇到了一些问题,所以我尝试创建一个 SCSSE,但这显然不想工作

static SwingWorker worker;
public static void main(String[] args) {
    worker = new SwingWorker<Object, Object>() {
        protected Object doInBackground() throws Exception {
            return "Hello";
        }
        protected void done() {
            System.out.println("I'm done!");
        };
    };
    System.out.println("working");
    try {
        System.out.println("result: " + worker.get());
    } catch (InterruptedException | ExecutionException e) {
        e.printStackTrace();
    }
    System.out.println("working finished");
}

执行此操作时,它会打印“工作”,然后脚本会继续无限期地运行...

【问题讨论】:

    标签: java swing swingworker


    【解决方案1】:

    您永远不会启动 SwingWorker,因此 worker.get() 方法在等待工作线程完成时处于阻塞状态。

    您可以通过添加来验证这一点:

    System.out.println("waiting for result");
    System.out.println("result: " + worker.get());
    

    如果您希望SwingWorker 执行,那么您需要调用:

    worker.execute() 
    

    在您创建 SwingWorker 之后。

    【讨论】:

    • 哦哇,这是一个愚蠢的错误。我认为如果它还没有被自动调用它会被自动调用。
    猜你喜欢
    • 2011-12-28
    • 2013-01-28
    • 1970-01-01
    • 2013-07-19
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    相关资源
    最近更新 更多