JProgressBar без JButton и PropertyChangeListener
Я новичок вJProgressBar
а также новичок в концепции ООП (изучая его), прочитал много статей и старался изо всех сил выучить его. Во всех показанных примерах была кнопка, которая запускает прогресс в ней, но как я могу сделать метод, чтобы при вызове метода он запускал прогресс?
Вот мой код первым
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);
}
}
мойjProgressBar
не слушает, когда я звонюExecuteTask () метод. Как я могу сделать это, чтобы позвонитьExecuteTask () и он выполняет задачу, а jProgressBar его слушает?