/**
* @version 1.00 1999-07-17
* @author Cay Horstmann
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class ProgressBarTest {
public static void main(String[] args)
{ JFrame frame = new ProgressBarFrame();
frame.show();
}
}
class ProgressBarFrame extends JFrame
{ public ProgressBarFrame()
{ setTitle("ProgressBarTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
} );
Container contentPane = getContentPane();
// this text area holds the activity output
textArea = new JTextArea();
// set up panel with button and progress bar
JPanel panel = new JPanel();
startButton = new JButton("Start");
progressBar = new JProgressBar();
progressBar.setStringPainted(true);
panel.add(startButton);
panel.add(progressBar);
contentPane.add(new JScrollPane(textArea), "Center");
contentPane.add(panel, "South");
// set up the button action
startButton.addActionListener(
new ActionListener()
{ public void actionPerformed(ActionEvent event)
{ progressBar.setMaximum(1000);
activity = new SimulatedActivity(1000);
activity.start();
activityMonitor.start();
startButton.setEnabled(false);
}
});
// set up the timer action
activityMonitor = new javax.swing.Timer(500,
new ActionListener()
{ public void actionPerformed(ActionEvent event)
{ int current = activity.getCurrent();
// show progress
textArea.append(current + "\n");
progressBar.setValue(current);
// check if task is completed
if (current == activity.getTarget())
{ activityMonitor.stop();
startButton.setEnabled(true);
}
}
});
}
private javax.swing.Timer activityMonitor;
private JButton startButton;
private JProgressBar progressBar;
private JTextArea textArea;
private SimulatedActivity activity;
}
class SimulatedActivity extends Thread
{ public SimulatedActivity(int t)
{ current = 0;
target = t;
}
public int getTarget()
{ return target;
}
public int getCurrent()
{ return current;
}
public void run()
{ while (current < target && !interrupted())
{ try
{ sleep(100);
}
catch(InterruptedException e)
{ return;
}
current++;
}
}
private int current;
private int target;
}
|