Пытаясь остановить свингера

У меня есть пользовательский 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();

Ответы на вопрос(4)

Ваш ответ на вопрос