J Progress Bar
J Progress Bar
J Progress Bar
java.io.*;
javax.swing.*;
javax.swing.event.*;
javax.swing.text.*;
javax.swing.border.*;
javax.swing.colorchooser.*;
javax.swing.filechooser.*;
javax.accessibility.*;
import
import
import
import
import
import
java.awt.*;
java.awt.event.*;
java.beans.*;
java.util.*;
java.io.*;
java.applet.*;
import java.net.*;
public class ProgressBar extends JFrame implements ActionListener
{
String value;
javax.swing.Timer timer1;
javax.swing.Timer timer2;
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel PanelPrincipal = new JPanel();
JProgressBar progressBar1;
JProgressBar progressBar2;
JTextArea progressTextArea1=new JTextArea(10,12);
JTextArea progressTextArea2=new JTextArea(10,12);
JButton BotonOk1 = new JButton("Ok");
JButton BotonOk2 = new JButton("Ok");
Container Contenedor;
public ProgressBar()
{
Contenedor = getContentPane();
JFrame FramePrincipal = new JFrame("Ejemplo de ProgressBar");
FramePrincipal.addWindowListener( new WindowAdapter( )
{
public void windowClosing( WindowEvent e )
{
System.exit( 0 );
}
}
);
progressTextArea1.setTabSize(20);
progressTextArea2.setTabSize(20);
PanelPrincipal.setLayout(new GridLayout(2,1));
progressBar1 = new JProgressBar(JProgressBar.HORIZONTAL,
0,text1.length()) {
public Dimension getPreferredSize() {
return new Dimension(300, super.getPreferredSize().height);
}
};
progressBar2 = new JProgressBar(JProgressBar.HORIZONTAL,
0,text2.length()) {
public Dimension getPreferredSize() {
return new Dimension(300, super.getPreferredSize().height);
}
};
BotonOk1.addActionListener(this);
panel1.add(progressTextArea1);
panel1.add(progressBar1);
panel1.add(BotonOk1);
progressBar1.setStringPainted(true);
BotonOk2.addActionListener(this);
panel2.add(progressTextArea2);
panel2.add(progressBar2);
panel2.add(BotonOk2);
progressBar2.setStringPainted(true);
PanelPrincipal.add(panel1);
PanelPrincipal.add(panel2);
Contenedor.add(PanelPrincipal,BorderLayout.NORTH);
progressBar1.getAccessibleContext().setAccessibleName(getString(""));
progressBar2.getAccessibleContext().setAccessibleName(getString(""));
FramePrincipal.setContentPane(PanelPrincipal);
FramePrincipal.pack();
FramePrincipal.show();
}
public void actionPerformed(ActionEvent e)
{
Object Item = e.getSource();
if (Item == BotonOk1)
{
timer1 = new javax.swing.Timer(18, crearAccion1());
timer1.start();
}
if (Item == BotonOk2)
{
timer2 = new javax.swing.Timer(18, crearAccion2());
timer2.start();
}
}
int texto = 0;
int texto2=0;
String text1 = getString("Este es un ejemplo\nde ProgressBar\nmostrando
el tiempo\nque toma en leer este\nString");
public Action crearAccion1() {
return new AbstractAction("cargar") {
public void actionPerformed (ActionEvent e) {
if(progressBar1.getValue() < progressBar1.getMaximum()) {
progressBar1.setValue(progressBar1.getValue() + 1);
progressTextArea1.append(text1.substring(texto, texto+1));
texto++;
} else {
if(timer1 != null) {
timer1.stop();
timer1 = null;
}
}
}
};
};
String text2 = getString("prueba corta");
public Action crearAccion2() {
return new AbstractAction("cargar") {
public void actionPerformed (ActionEvent e) {
if(progressBar2.getValue() < progressBar2.getMaximum()) {
progressBar2.setValue(progressBar2.getValue() + 1);
progressTextArea2.append(text2.substring(texto2, texto2+1));
texto2++;
} else {
if(timer2 != null) {
timer2.stop();
timer2 = null;
}
}
}
};
};
en donde se aprecia la diferencia entre ambos string, el string de arriba le toma mas tiempo
en completar el ProgressBar, mientras que el string de abajo se demora mucho menos por
ser un string muy corto a diferencia del de arriba.
NOTA : en esta parte se va explicar el componte progressbar como si fuera uno solo.
El constructor usado para crear la barra de progreso selecciona los valores mximo
y mnimo de la barra. Tambin se pueden seleccionar estos valores con los mtodos
setMinimum y setMaximum. Los valores mnimo y mximo utilizados en este programa
son 0 y la longitud de la tarea, lo que es tpico de muchos programas y tareas. Sin embargo,
los valores mximo y mnimo de una barra de progreso pueden ser cualquier valor, incluso
negativos. El cdigo tambin selecciona el valor actual de la barra a 0.
private JProgressBar progressBar = new JProgressBar(0, task.getLengthOfTask());
Se arranca la tarea pulsando el botn Ok. Una vez que la tarea ha comenzado, un
temporizador (un ejemplar de la clase Timer) dispara un evento crearAccin cada segundo.
Aqu est el mtodo ActionPerformed del oyente de action del temporizador.
public void actionPerformed(ActionEvent e)
{
Object Item = e.getSource();
if (Item == BotonOk)
{
timer = new javax.swing.Timer(18, crearAccion());
timer.start();
}
}
otra propiedades de progressBar es que, se puede cambiar el porcentaje de partida, para este caso partir de
10%
progressBar.setValue(100);
la propiedad setStringPainted es mostrar el porcentaje durante la accin del proceso
progressBar.setStringPainted(true);
En este apartado se van a realizar algunos ejemplos con los metodos del componente
Ejemplo 2:ProgressBar1.java
Se muestra la diferencia del progressbar en forma vertical u horizontal. Se marca con
negrita donde se genera el cambio.
import
import
import
import
import
import
import
import
import
javax.swing.*;
javax.swing.event.*;
javax.swing.text.*;
javax.swing.border.*;
javax.swing.colorchooser.*;
java.awt.*;
java.awt.event.*;
java.util.*;
java.io.*;
PanelPrincipal.setLayout(new GridLayout(2,1));
/*
SE PUEDE PONER EL PROGRESSbAR EN FORMA VERTICAL U HORIZONTAL
*/
progressBar1 = new JProgressBar(JProgressBar.VERTICAL, 0,text1.length())
{
public Dimension getPreferredSize() {
return new Dimension(30, super.getPreferredSize().height);
}
};
progressBar2 = new JProgressBar(JProgressBar.HORIZONTAL,
0,text2.length()) {
public Dimension getPreferredSize() {
return new Dimension(300, super.getPreferredSize().height);
}
};
BotonOk1.addActionListener(this);
panel1.add(progressBar1);
panel1.add(BotonOk1);
progressBar1.setStringPainted(true);
BotonOk2.addActionListener(this);
panel2.add(progressBar2);
panel2.add(BotonOk2);
progressBar2.setStringPainted(true);
PanelPrincipal.add(panel1);
PanelPrincipal.add(panel2);
Contenedor.add(PanelPrincipal,BorderLayout.NORTH);
progressBar1.getAccessibleContext().setAccessibleName(getString(""));
progressBar2.getAccessibleContext().setAccessibleName(getString(""));
FramePrincipal.setContentPane(PanelPrincipal);
FramePrincipal.pack();
FramePrincipal.show();
}
public void actionPerformed(ActionEvent e)
{
Object Item = e.getSource();
if (Item == BotonOk1)
{
timer1 = new javax.swing.Timer(18, crearAccion1());
timer1.start();
}
if (Item == BotonOk2)
{
timer2 = new javax.swing.Timer(18, crearAccion2());
timer2.start();
}
}
int texto = 0;
int texto2=0;
String text1 = getString("Este es un ejemplo\nde ProgressBar\nmostrando
el tiempo\nque toma en leer este\nString");
public Action crearAccion1() {
return new AbstractAction("cargar") {
public void actionPerformed (ActionEvent e) {
if(progressBar1.getValue() < progressBar1.getMaximum()) {
progressBar1.setValue(progressBar1.getValue() + 1);
texto++;
} else {
if(timer1 != null) {
timer1.stop();
timer1 = null;
}
}
}
};
};
String text2 = getString("Este es un ejemplo\nde ProgressBar\nmostrando
el tiempo\nque toma en leer este\nString");
public Action crearAccion2() {
return new AbstractAction("cargar") {
public void actionPerformed (ActionEvent e) {
if(progressBar2.getValue() < progressBar2.getMaximum()) {
progressBar2.setValue(progressBar2.getValue() + 1);
texto2++;
} else {
if(timer2 != null) {
timer2.stop();
timer2 = null;
}
}
}
};
};
ejemplo 3 : ProgressBar2.java
se agrega o elimina si es necesario mostrar el porcentaje en la barra de progreso. Se amraca
con negrita donde se genera el cambio.
import
import
import
import
import
import
import
import
import
javax.swing.*;
javax.swing.event.*;
javax.swing.text.*;
javax.swing.border.*;
javax.swing.colorchooser.*;
java.awt.*;
java.awt.event.*;
java.util.*;
java.io.*;
{
System.exit( 0 );
}
}
);
PanelPrincipal.setLayout(new GridLayout(1,1));
progressBar1 = new JProgressBar(JProgressBar.VERTICAL, 0,text1.length())
{
public Dimension getPreferredSize() {
return new Dimension(30, super.getPreferredSize().height);
}
};
BotonOk1.addActionListener(this);
panel1.add(progressBar1);
panel1.add(BotonOk1);
/*en esta parte se puede cambiar el false por el true*/
progressBar1.setStringPainted(false);
PanelPrincipal.add(panel1);
Contenedor.add(PanelPrincipal,BorderLayout.NORTH);
progressBar1.getAccessibleContext().setAccessibleName(getString(""));
FramePrincipal.setContentPane(PanelPrincipal);
FramePrincipal.pack();
FramePrincipal.show();
}
public void actionPerformed(ActionEvent e)
{
Object Item = e.getSource();
if (Item == BotonOk1)
{
timer1 = new javax.swing.Timer(18, crearAccion1());
timer1.start();
}
}
int texto = 0;
int texto2=0;
String text1 = getString("Este es un ejemplo\nde ProgressBar\nmostrando
el tiempo\nque toma en leer este\nString");
public Action crearAccion1() {
return new AbstractAction("cargar") {
public void actionPerformed (ActionEvent e) {
if(progressBar1.getValue() < progressBar1.getMaximum()) {
progressBar1.setValue(progressBar1.getValue() + 1);
texto++;
} else {
if(timer1 != null) {
timer1.stop();
timer1 = null;
}
}
}
};
};
public String getString(String key)
{
value = key;
return value;
}
public static void main(String[] args) {
ProgressBar2 demo = new ProgressBar2();
}
}
setStringPainted(true)
setStringPainted(false)
ejemplo 4: ProgressBar3.java
ejemplo con diferentes dimensiones del ProgressBar. Se marca con negrita
la parte donde se produce el cambio.
import
import
import
import
import
import
import
import
import
javax.swing.*;
javax.swing.event.*;
javax.swing.text.*;
javax.swing.border.*;
javax.swing.colorchooser.*;
java.awt.*;
java.awt.event.*;
java.util.*;
java.io.*;
Container Contenedor;
public ProgressBar3()
{
Contenedor = getContentPane();
JFrame FramePrincipal = new JFrame("Ejemplo de ProgressBar");
FramePrincipal.addWindowListener( new WindowAdapter( )
{
public void windowClosing( WindowEvent e )
{
System.exit( 0 );
}
}
);
PanelPrincipal.setLayout(new GridLayout(1,1));
progressBar1 = new JProgressBar(JProgressBar.VERTICAL, 0,text1.length())
{
public Dimension getPreferredSize() {
return new Dimension(10, super.getPreferredSize().height);
}
};
BotonOk1.addActionListener(this);
panel1.add(progressBar1);
panel1.add(BotonOk1);
progressBar1.setStringPainted(false);
PanelPrincipal.add(panel1);
Contenedor.add(PanelPrincipal,BorderLayout.NORTH);
progressBar1.getAccessibleContext().setAccessibleName(getString(""));
FramePrincipal.setContentPane(PanelPrincipal);
FramePrincipal.pack();
FramePrincipal.show();
}
public void actionPerformed(ActionEvent e)
{
Object Item = e.getSource();
if (Item == BotonOk1)
{
timer1 = new javax.swing.Timer(18, crearAccion1());
timer1.start();
}
}
int texto = 0;
int texto2=0;
String text1 = getString("Este es un ejemplo\nde ProgressBar\nmostrando
el tiempo\nque toma en leer este\nString");
public Action crearAccion1() {
return new AbstractAction("cargar") {
public void actionPerformed (ActionEvent e) {
forma 1
progressBar1 = new JProgressBar(JProgressBar.VERTICAL, 0,text1.length())
{
public Dimension getPreferredSize() {
return new Dimension(10,180); //10 de ancho x 180 de alto
}
};
forma 2
progressBar1 = new JProgressBar(JProgressBar.VERTICAL, 0,text1.length())
{
public Dimension getPreferredSize() {
return new Dimension(30,180); //30 de ancho x 180 de alto
}
};
forma 3 exagerada
progressBar1 = new JProgressBar(JProgressBar.VERTICAL, 0,text1.length())
{
public Dimension getPreferredSize() {
return new Dimension(100,180); //30 de ancho x 180 de alto
}
};
Propsito
Selecciona u obtiene el valor actual de la barra de progreso.
El valor est limitado por los valores mximo y mnimo.
int getValue()
double getPercentComplete()
void setMinimum(int)
int getMinimum()
void setMaximum(int)
int getMaximum()
void
setModel(BoundedRangeModel)
BoundedRangeModel
getMaximum()
int getOrientation()
Propsito
Selecciona u obtiene si la barra de progreso es vertical u horizontal.
Los valores aceptados son JProgressBar.VERTICAL o
JProgressBar.HORIZONTAL.
void
setBorderPainted(boolean)
boolean
isBorderPainted()
void
setStringPainted(boolean)
boolean
isStringPainted()
void setString(String)
String getString()