0

我正在开发/开发一个桌面应用程序,其中按钮具有动作侦听器并执行大量后台任务,我之前没有使用线程、等待、通知或睡眠。我只是对学习哪一个以及使用哪一个感到困惑,否则当我单击按钮时,JFrame 就会冻结。

1)有人可以建议我使用什么更容易吗?

2) 我正在使用带有 setvalue(n) 方法的 jprogress bar,但我想用加载时间自动替换 n,我该怎么做?

4

2 回答 2

1

如果您使用 Swing 作为 GUI,您应该使用“SwingWorker”类:

http://docs.oracle.com/javase/tutorial/uiswing/concurrency/simple.html

于 2013-03-05T14:33:06.230 回答
1

1)当您单击按钮进入新线程时,您需要将运行的代码移动。像这样的东西会起作用:

public class Worker implements Runnable {
    Thread t;
    public Worker() {
        t = new Thread(this);
    }
    @Override
    public void run() {
        //do stuff here
    }
    public void start() {
        t.start();
    }
}

然后,当您单击 JFrame 中的按钮时:

Worker w = new Worker();
w.start();

2)您可以setProgress()使用任何您想要的调用int(例如,在开始时获取当前时间,在结束时获取当前时间,所用时间=结束开始)。只要确保你也使用setMaximum()过。

于 2013-03-05T14:36:57.100 回答