/ / Java бутон многопоточна - java, многопоточна, люлка

Java бутон multithreading - Java, multithreading, swing

Имам следния проблем. Създадох 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);