dcsimg
September 25, 2017
Hot Topics:

User Code: Multi Progress Bar

  • May 10, 2001
  • By Giacomo Veneri
  • Send Email »
  • More Articles »

Here's the code for a multi progress bar.

Simple colored JProgressBar.

Multi ProgressBar.


Use:

      //INSTANCE                
      uJackSlider s0 = new uJackSlider(uJackSlider.CIRCULAR);
      uJackSlider s1 = new uJackSlider(uJackSlider.INDICATOR);
      uJackSlider s2 = new uJackSlider(uJackSlider.COMPETITIVE);
      uJackSlider s3 = new uJackSlider(uJackSlider.MULTICOLOR);

      //SET COLOR
      s0.setForeground(Color.red);
      s0.setOtherForeground(Color.orange);
      s3.setTypeColor(s3.BLUEGREEN);

      //SET VALUE
      s0.setOtherValue(80);                     
      s0.setValue(100); 

Code:


/**
 * Title:        JackGraph

* Description: Grafici 2D,3D. * Copyright 2000. *

* Copyright: Copyright (c) Giacomo Veneri

* Company: Etruria Innovazione SCpA

* @author Giacomo Veneri * @version 1.0 */ //package jack.component; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.border.*; public class uJackSlider extends JProgressBar{ //-------------------------------------------------------------------------- public static final String TITLE = "Line Graph"; public static final String VERSION = "1.0"; private final boolean DEBUG = true; //-------------------------------------------------------------------------- private int type = 0; private int typeColor = 0; public static final int INDICATOR = 0; public static final int COMPETITIVE = 1; public static final int CIRCULAR = 2; public static final int MULTICOLOR = 3; public static final int REDBLUE = 0; public static final int REDGREEN = 1; public static final int BLUEGREEN = 2; //-------------------------------------------------------------------------- private int otherValue = -1; private Color otherForegroundColor = Color.red; //-------------------------------------------------------------------------- //slider constructor public uJackSlider(int type) { super(); this.setForeground(Color.blue); this.setType(type); this.setBorder(new EtchedBorder(EtchedBorder.LOWERED)); } //slider constructor public uJackSlider() { super(); this.setForeground(Color.blue); this.setBorder(new EtchedBorder(EtchedBorder.LOWERED)); } //slider constructor public uJackSlider(int min, int max) { super(min,max); this.setForeground(Color.blue); this.setBorder(new EtchedBorder(EtchedBorder.LOWERED)); } //graph ONLY OVERLOADED public void paint(Graphics g) { //controllo if (g==null) return; //delete paint g.setColor(this.getBackground()); g.fill3DRect(0,0,this.getWidth(),this.getHeight(),true); //draw select if (type == INDICATOR) this.drawIndicator(g); if (type == CIRCULAR) this.drawCircular(g); if (type == MULTICOLOR) this.drawMulticolor(g); if (type == COMPETITIVE) this.drawCompetitive(g); } /** * DATA SETTING OTHER */ public void setOtherValue(int value) { otherValue = value; this.repaint(); } public int getOtherValue() { return otherValue; } public void setOtherForeground(Color value) { otherForegroundColor = value; } public Color getOtherForeground() { return otherForegroundColor; } public void setType(int type) { this.type = type; } public void setTypeColor(int typeColor) { this.typeColor = typeColor; } //-------------------------------------------------------------------------- /** * PRIVATE FUNCTION */ //INDICATOR MODE private void drawIndicator(Graphics g) { //prepare setting int h = this.getHeight(); int w = this.getWidth(); int ox = (getOtherValue()>=0) ? w/2 : 0; int oy = 0; //paint int[] xPoints = new int[4]; int[] yPoints = new int[4]; //upper xPoints[0]=ox; yPoints[0]=oy; xPoints[1]=ox; yPoints[1]=h; xPoints[2]= ox+((int)(((double)w/2)* ((double)this.getValue())/((double)(this.getMaximum()-this.getMinimum())))); xPoints[2]= (xPoints[2]>0) ? xPoints[2] : 0; yPoints[2]=h/2; xPoints[3]=ox; yPoints[3]=oy; //draw g.setColor(this.getForeground()); g.fillPolygon(xPoints,yPoints,4); g.setColor(this.getForeground().darker()); g.drawPolyline(xPoints,yPoints,4); g.drawString(this.getValue() + " %",xPoints[2],yPoints[2]+3); if (getOtherValue()>=0) { //lower xPoints[0]=0; yPoints[0]=oy; yPoints[1]=h; xPoints[0]=xPoints[1]; xPoints[2]=((int)(ox-((double)ox)* ((double)this.getOtherValue())/((double)(this.getMaximum()-this.getMinimum())))); xPoints[2]= (xPoints[2]>0) ? xPoints[2] : 0; yPoints[2]=h/2; xPoints[3]=xPoints[0]; yPoints[3]=yPoints[0]; //draw g.setColor(this.getOtherForeground()); g.fillPolygon(xPoints,yPoints,4); g.setColor(this.getOtherForeground().darker()); g.drawPolyline(xPoints,yPoints,4); g.drawString(this.getOtherValue() + " %",xPoints[2]-10,yPoints[2]+3); } } //COMPETITIVE MODE private void drawCompetitive(Graphics g) { //prepare setting int h = this.getHeight(); int w = this.getWidth(); int ox = 0; int oy = 0; double a = (double)this.getValue()/(double)this.getMaximum(); double b = (double)this.getOtherValue()/(double)this.getMaximum(); double A = w*a/(a+b); //draw g.setColor(this.getForeground()); g.fill3DRect(1,1,(int)A,h-1, true); g.setColor(this.getOtherForeground()); g.fill3DRect((int)A,1,w-1,h-1, true); //drw string g.setColor(Color.white); g.drawString("" + a*100 + "%", (int)(A/2), h/2); g.drawString("" + b*100 + "%", (int)((w-A)/2+A), h/2); g.drawLine((int)A,1,(int)A,h); } //CIRCULAR MODE private void drawCircular(Graphics g) { //prepare setting int h = this.getHeight(); int w = this.getWidth(); int ox = 0; int oy = 0; double a = 360-this.getValue()*360/this.getMaximum(); double bh = this.getOtherValue()*h/this.getMaximum()/2; double bw = this.getOtherValue()*w/this.getMaximum()/2; //draw g.setColor(this.getOtherForeground()); g.fillArc(1,1,w,h, (int)a, (int)(360-a)); g.setColor(this.getForeground()); g.fillArc((int)bw,(int)bh,w-2*(int)bw,h-2*(int)bh, (int)a, (int)(360-a)); //drw string g.setColor(Color.white); g.drawString("" + this.getValue() + "%", w/2,h/2); g.drawString("" + this.getOtherValue() + "%", (int)bw,(int)bh); } //MULTICOLOR MODE private void drawMulticolor(Graphics g) { //prepare setting int h = this.getHeight(); int w = this.getWidth(); //value int value = this.getValue(); int maxV = this.getMaximum(); float perc = ((float)value)/((float)maxV); int i=0; for (i=0; i=((float)i)/((float)w) ) { g.setColor(this.getMColor(i,w)); g.drawLine(i,1,i,h-1); } else { break; } } g.setColor(this.getBackground()); g.drawString(this.getValue() + " %",w/2,h/2); } //GET COLOR private Color getMColor(int i, int N) { float v = ((float)i)/((float)N); if (this.typeColor == REDBLUE) return new Color((int)(254*v+1),0, (int)(255-254*v)); if (this.typeColor == REDGREEN) return new Color((int)(254*v+1), (int)(255-254*v),0); if (this.typeColor == BLUEGREEN) return new Color(0,(int)(254*v+1), (int)(255-254*v)); return new Color((int)(254*v+1),(int)(254*v+1), (int)(254*v+1)); } }

DownLoads

Download demo and source files = 2.6K

This article was contributed by Giacomo Veneri of Etruria Innovazione SCpA.






Comment and Contribute

 


(Maximum characters: 1200). You have characters left.

 

 


Enterprise Development Update

Don't miss an article. Subscribe to our newsletter below.


Thanks for your registration, follow us on our social networks to keep up-to-date
Rocket Fuel