FileDocCategorySizeDatePackage
ProgressBar.javaAPI DocExample1172Mon Feb 23 16:15:42 GMT 1998oreilly.jonathan.awt

ProgressBar.java

package oreilly.jonathan.awt;

import java.awt.*;

public class ProgressBar
    extends Canvas {
  int mLevel;
  int mMaximum;
  Color mFrameColor;

  public ProgressBar() { this(100); }
  
  public ProgressBar(int max) {
    setForeground(Color.blue);
    mFrameColor = Color.black;
    setMaximum(max);
    setLevel(0);
  }

  public void setMaximum(int max) {
    mMaximum = max;
    repaint();
  }
	
  public void setLevel(int level) {
    mLevel = (level > mMaximum) ? mMaximum : level;
    repaint();
  }

  public void update(Graphics g) { paint(g); }
	
  public void paint(Graphics g) {
    Dimension d = getSize();
    double ratio = (double)((double)mLevel / (double)mMaximum);
    int x = (int)((double)d.width * ratio);

    g.setColor(mFrameColor);
    g.drawRect(0, 0, d.width - 1, d.height - 1);

    g.setColor(getForeground());
    g.fillRect(1, 1, x, d.height - 2);

    g.setColor(getBackground());
    g.fillRect(x + 1, 1, d.width - 2 - x, d.height - 2);
  }
	
  public Dimension getMinimumSize() { return new Dimension(10, 1); }
  public Dimension getPreferredSize() { return new Dimension(100, 10); }
}