/* * ================================================================= * DemoProgressBar.java : This applet uses the Swing progress bar to * indicate the progress of computation in the summation of numbers * 1 through 100. * * Adapted from : Pantham S., Pure JFC Swing, 1999. * Modified by : Mark Austin March, 2001 * ================================================================= */ import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class DemoProgressBar extends JApplet { Container container = null; JButton startButton, stopButton; JTextField inputTextField, outputTextField; JProgressBar pBar = null; Timer timer = null; static int sum = 0; static int counter = 0; public void init() { // 1. Get the handle on the content pane and // assign the grid layout. container = this.getContentPane(); container.setLayout(new GridLayout(3,1)); // 2. Add a horizontal box to the container. Box hbox1 = Box.createHorizontalBox(); container.add(hbox1); // 3. Add labels and input and output text fields // to the horizontal box. hbox1.add(Box.createHorizontalGlue()); JLabel label1 = new JLabel("Sum of first ", JLabel.LEFT); label1.setFont(new Font("Dialog", Font.PLAIN, 15)); hbox1.add(label1); inputTextField = new JTextField("100", 4); hbox1.add(inputTextField); JLabel label2 = new JLabel(" numbers is ", JLabel.LEFT); label2.setFont(new Font("Dialog", Font.PLAIN, 15)); hbox1.add(label2); outputTextField = new JTextField(10); hbox1.add(outputTextField); hbox1.add(Box.createHorizontalGlue()); // 4. Add another horizontal box to the container. Box hbox2 = Box.createHorizontalBox(); container.add(hbox2); // 5. Add Start and Stop buttons to the container. startButton = new JButton("Start"); startButton.addActionListener(new ButtonListener()); hbox2.add(Box.createHorizontalGlue()); hbox2.add(startButton); hbox2.add(Box.createHorizontalGlue()); stopButton = new JButton("Stop"); stopButton.addActionListener(new ButtonListener()); hbox2.add(Box.createHorizontalGlue()); hbox2.add(stopButton); hbox2.add(Box.createHorizontalGlue()); // 6. Create and add a progress bar to the remaining // display area. pBar = new JProgressBar(); pBar.setStringPainted(true); Border border = BorderFactory.createLineBorder(Color.red, 2); pBar.setBorder(border); pBar.setBackground(Color.white); pBar.setForeground(Color.blue); pBar.setMinimum(0); pBar.setMaximum(Integer.parseInt(inputTextField.getText())); container.add(pBar); // 7. Create a timer object. timer = new Timer(0, new TimerListener()); } // 8. Timer listener that computes the sum of natural numbers, // indicates the computation progress, and displays the result. class TimerListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (Integer.parseInt(inputTextField.getText())> 0){ counter++; sum = sum+counter; pBar.setValue(counter); outputTextField.setText(Integer.toString(sum)); } else { outputTextField.setText("0"); } if (counter >= Integer.parseInt(inputTextField.getText())) timer.stop(); } } // 9. Button listener that actually starts or stops the // process. class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) { JButton button = (JButton) e.getSource(); if (button.getText() == "Start") { outputTextField.setText(""); if (inputTextField.getText() != " ") { pBar.setMaximum(Integer.parseInt( inputTextField.getText())); sum = 0; counter = 0; timer.start(); } } else if (button.getText() == "Stop") { timer.stop(); outputTextField.setText(""); sum = 0; counter = 0; pBar.setValue(0); } } } }