Имам следния проблем. Създадох GUI в реализирания Netbeans GUI builder и имам няколко бутона в програмата си. Ако натисна един от бутоните, той ще започне да изпълнява някакъв метод, който отнема около 10 секунди, но има и бутон за анулиране на това метод. Но докато работи методът на бутона 1, не мога да щракна върху някой друг бутон в програмата ми, това е като замразен и трябва да изчакам, докато методът бъде направен. Мисля, че това има нещо общо с многопоточността, можете ли да ми подскажете ??
Благодаря !
Отговори:
0 за отговор № 1Можеш да използваш SwingWorker
.
public class MyBackgroundWorker extends SwingWorker<Integer, String> {
@Override
protected Integer doInBackground() throws Exception {
callYourLongTimeTakingMethod();
return 0;
}
}
Сега на вашия слушател на бутона за стартиране създайте обект за това SwingWorker
клас и го изпълни.
objMyBGWorker = new MyBackgroundWorker();
objMyBGWorker.execute();
А на бутона за отказване дори слушателят може да се обади,
objMyBGWorker.cancel(true);