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?