Trying to stop swingworker

前端 未结 4 1680
面向向阳花
面向向阳花 2020-12-20 08:52

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

相关标签:
4条回答
  • 2020-12-20 09:10

    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

    0 讨论(0)
  • 2020-12-20 09:12

    As explained in the official documentation, you need to check isCancelled() in your SwingWorker callback method.

    0 讨论(0)
  • 2020-12-20 09:13

    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

    0 讨论(0)
  • 2020-12-20 09:19

    You could call

    worker.cancel(true);
    

    in your button action listener?

    0 讨论(0)
提交回复
热议问题