import java.awt.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; class MyProgBar extends Canvas { int minVal = 0; int maxVal = 100; int curVal = 50; Color fgColor = new Color(0,0,128); Color bgColor = Color.lightGray; Color txColor = Color.white; public void paint(Graphics g) { double percentage = (double)(curVal-minVal)/(double)(maxVal-minVal); String percString = Double.toString(percentage*100) + "%"; g.setFont(new Font("Dialog", Font.PLAIN, 10)); FontMetrics fm = getFontMetrics(g.getFont()); g.setColor(bgColor); g.fillRect(0,0,getSize().width-1,getSize().height-1); g.setColor(fgColor); g.fillRect(0,0,(int)((double)(getSize().width-1)/(maxVal-minVal)*(curVal-minVal)),getSize().height-1); g.setXORMode(txColor); g.drawString(percString, getSize().width/2-fm.stringWidth(percString)/2, getSize().height/2-fm.getHeight()/2+fm.getAscent()); g.setPaintMode(); g.setColor(Color.black); g.drawRect(0,0,getSize().width-1,getSize().height-1); } public void setMinValue(int v) { minVal = v; } public void setMaxValue(int v) { maxVal = v; } public void setPos(int p) { curVal = p; repaint(); } }