2013-03-05 105 views
0

我正在开发/开发一个桌面应用程序,其中按钮有actionlistener并且执行大量的后台任务,我没有使用线程,等待,通知或睡眠。我只是混淆了哪一个学习和哪一个使用,否则当我点击按钮,JFrame只是冻结。Java中的线程,等待,通知,睡眠

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

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

回答

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()