Mam następujący problem. Zaprojektowałem GUI w zaimplementowanym narzędziu Netbeans GUI i mam kilka przycisków w swoim programie. Jeśli naciśniesz jeden z przycisków, zacznie działać metoda, która zajmie około 10 sekund, ale jest też przycisk do anulowania uruchamiania tego ale podczas działania metody Button 1 nie mogę kliknąć żadnego innego przycisku w moim programie, to tak jakby zostać zamrożonym i muszę poczekać, aż metoda zostanie zakończona. Myślę, że to ma coś wspólnego z wielowątkowością, czy możecie mi coś podpowiedzieć?
Dzięki !
Odpowiedzi:
0 dla odpowiedzi № 1Możesz użyć SwingWorker
.
public class MyBackgroundWorker extends SwingWorker<Integer, String> {
@Override
protected Integer doInBackground() throws Exception {
callYourLongTimeTakingMethod();
return 0;
}
}
Teraz na przycisku nasłuchiwania zdarzeń przycisku Start stwórz dla tego obiekt SwingWorker
klasy i wykonaj to.
objMyBGWorker = new MyBackgroundWorker();
objMyBGWorker.execute();
A na przycisku anulowania nawet słuchacz, do którego możesz zadzwonić,
objMyBGWorker.cancel(true);