Trying to stop swingworker

前端 未结 4 1718
面向向阳花
面向向阳花 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: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() { 
      @Override
      protected String doInBackground() throws Exception {
        while ( !isCancelled() ) {
          //do your stuff
        }
      }
    }
    

    Note that you need to create the worker before you create your ActionListener

提交回复
热议问题