Próbujesz powstrzymać swingworkera
Mam niestandardowy JDialog, który pojawia się po uruchomieniu mojego wątku SwingWorker. Okno dialogowe ma tylko pasek JProgress i przycisk (przycisk anulowania). Próbuję wymyślić, jak anulować mój SwingWorker, ale nie mam szczęścia. Myślę jednak, że jestem na dobrej drodze. Napisałem metodę anulowania, teraz muszę tylko dowiedzieć się, jak ją wywołać po naciśnięciu przycisku. Kod jest poniżej ...
btn_Cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
//trying to access cancel()
}
});
SwingWorker worker = new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
while (runLoad.getState() != Thread.State.TERMINATED && !isCancelled()) {
try {
synchronized (this) {
Thread.sleep(2000);
}
} catch (InterruptedException e){}
}
return null;
}
@Override
public void done() {
try {
get();
} catch (InterruptedException | ExecutionException ex) {
JOptionPane.showMessageDialog(null,
"Somethings Wrong: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
Progress.setVisible(false);
Progress.dispose();
}
public void cancel(SwingWorker worker){
worker.cancel(true);
}
};
worker.execute();