dcsimg
July 17, 2018
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.

By submitting your information, you agree that developer.com may send you developer offers via email, phone and text message, as well as email offers about other products and services that developer believes may be of interest to you. developer will process your information in accordance with the Quinstreet Privacy Policy.


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