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();

questionAnswers(4)

yourAnswerToTheQuestion