I have a custom JDialog that pops up when my SwingWorker thread fires up. The dialog just has a JProgressbar and a Button (cancel button). I am trying to figure out how to c
You should call
worker.cancel(true);
//this will set the cancel flag of the worker
Then, when you invoke isCancelled()
this will return true
. So, you
Can check this state in your loop
As explained in the official documentation, you need to check isCancelled()
in your SwingWorker
callback method.
Your cancel button should call the SwingWorker#cancel
method
final SwingWorker worker = ...;
btn_Cancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
worker.cancel( true );
}
});
In your worker, you have to make sure to check the cancel flag
SwingWorker worker = new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
while ( !isCancelled() ) {
//do your stuff
}
}
}
Note that you need to create the worker before you create your ActionListener
You could call
worker.cancel(true);
in your button action listener?