2013-03-05 3 views
0

Я разрабатываю/разрабатываю настольное приложение, в котором кнопка имеет actionlistener и выполняет много фоновой задачи, я не использовал поток, не ожидал, не уведомлял и не спал раньше. Я просто смущен, какой из них можно узнать, а какой - использовать, когда я нажимаю кнопку, JFrame просто замерзает.Thread, Wait, Notify, Sleep in Java

1) Может кто-нибудь предложить мне, что использовать и проще?

2) Я использую jprogress bar с методом 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().