JProgressBar sin JButton y PropertyChangeListener

Soy nuevo enJProgressBar y también nuevo en los conceptos de OOP (aprendiéndolo) y leí muchos artículos e hice todo lo posible para aprenderlo. Todos los ejemplos mostrados tenían un botón que inicia el progreso, pero ¿cómo puedo hacer un método para que cuando se llame al método comience el progreso?

Aquí está mi código primero

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;

public class ProgressDemo
{
    JProgressBar ProgressBar;
    Task task;
    boolean done = false;

    class Task extends SwingWorker<Void, Void> 
    {
        @Override
        public Void doInBackground() 
        {
            Random random = new Random();
            int progress = 0;
            setProgress(0);
            while (progress < 100) 
            {
               try 
               {
                    Thread.sleep(random.nextInt(1000));
               } 
               catch (InterruptedException ignore){}
               progress += random.nextInt(10);
               setProgress(Math.min(progress, 100));
            }
            return null;
        }
        @Override
        public void done() 
        {
            done = true;
        }
    }

    public void propertyChange(PropertyChangeEvent evt) 
    {
      if(!done)
      {
        int progress = task.getProgress();
        if(progress==0)
        {
            ProgressBar.setIndeterminate(true);
        }
        else
        {
            ProgressBar.setIndeterminate(false); 
            ProgressBar.setString(null);
            ProgressBar.setValue(progress);
        }
      }
    }

    //I want to make a method here, so that it can be called when ever I want
    public void ExecuteTask()
    {
        task = new Task();
        task.execute();
    }

    public static void main(String[] args) 
    {
        JFrame MainScreen = new JFrame(); 
        JPanel MainPanel = new JPanel();
        ProgressBar = new JProgressBar(0, 100);
        ProgressBar.setValue(0);
        ProgressBar.setStringPainted(false);
        MainPanel.add(ProgressBar);
        MainScreen.getContentPane().add(MainPanel);
        MainScreen.setVisible(true);
    }
}

MijProgressBar no escucha cuando llamoExecuteTask () método. ¿Cómo puedo hacer que llame?ExecuteTask () y ejecuta tarea y jProgressBar lo escucha?

Respuestas a la pregunta(1)

Su respuesta a la pregunta