Пытаясь остановить свингера
У меня есть пользовательский JDialog, который появляется, когда запускается мой поток SwingWorker. В диалоге есть только JProgressbar и кнопка (кнопка отмены). Я пытаюсь выяснить, как отменить мой SwingWorker, но мне не повезло. Я думаю, что я на правильном пути, хотя. Я написал метод отмены, теперь мне просто нужно выяснить, как вызывать его при нажатии кнопки. Код ниже ...
btn_Cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e)
{
//trying to access cancel()
}
});
SwingWorker worker = new SwingWorker() {
@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();