Programación en castellano
Inicio > Foros > Java (básico) > Barra de Progreso en JFrame
-Foros de debate

Java (básico)
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Barra de Progreso en JFrame
Enviado por rmarmol80 el día 27 de junio de 2008

Saludos a todos y gracias de antemano por la ayuda que me habeis prestado en el foro. Me gustaría colocar una barra de progreso, progressMonitor, mientras se realizan otras tareas. El problema surge cuando arranco el hilo de la barra he intento, como ejemplo, imprimir por pantalla varias lineas simulando otra tarea. Pues hasta que no deja de imprimir todas las líneas no arranca el hilo. Os coloco el código por si alguien me puede ayudar.
Muchas gracias.
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;

public class VentanaProgreso extends JFrame {
private Container panelPrincipal = null;
private JButton botonEmpezar, botonParar;
private JTextField campoEntrada, campoResultado;
private ProgressMonitor pMonitor = null;
private Timer reloj = null;

private int suma,contador;

public VentanaProgreso() {
suma = contador = 0;
setDefaultCloseOperation(EXIT_ON_CLOSE);

setSize(400,100);

// 1. Añadimos un grid layout al panel principal
panelPrincipal = this.getContentPane();
panelPrincipal.setLayout(new GridLayout(2,1));

// 2. añadimos una caja horizontal al gridlayout
Box caja = Box.createHorizontalBox();
panelPrincipal.add(caja);

// 3. Rellenamos la caja horizontal
caja.add(Box.createHorizontalGlue());
JLabel etiq1 = new JLabel("Suma del 1 al ", JLabel.LEFT);
etiq1.setFont(new Font("Dialog", Font.PLAIN, 15));
caja.add(etiq1);

campoEntrada = new JTextField("100", 4);
caja.add(campoEntrada);

JLabel etiq2 = new JLabel(" Resultado: ", JLabel.LEFT);
etiq2.setFont(new Font("Dialog", Font.PLAIN, 15));
caja.add(etiq2);

campoResultado = new JTextField(10);
caja.add(campoResultado);
caja.add(Box.createHorizontalGlue());

// 4. Otra caja horizontal

Box caja2 = Box.createHorizontalBox();
panelPrincipal.add(caja2);

// 5. Botones de empezar y acabar

botonEmpezar = new JButton("Empezar");
botonEmpezar.addActionListener(new EscuchaBoton());
caja2.add(Box.createHorizontalGlue());
caja2.add(botonEmpezar);
caja2.add(Box.createHorizontalGlue());

// botón para parar la suma
botonParar = new JButton("Parar");
botonParar.addActionListener(new EscuchaBoton());
caja2.add(Box.createHorizontalGlue());
caja2.add(botonParar);
caja2.add(Box.createHorizontalGlue());

// 6. creamos un reloj
// el primer parámetros es el núm. de milisegundos
// que pasa entre cada llamada a la escucha
// 10 significa llamar constantemente
reloj = new Timer(10, new EscuchaReloj());
}

// 7. Aquí se hace todo

class EscuchaReloj implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (Integer.parseInt(campoEntrada.getText())> 0){
contador++;
suma += contador;
pMonitor.setProgress(contador);
pMonitor.setNote("Sumando " + contador);
campoResultado.setText(Integer.toString(suma));
}
else {
campoResultado.setText("0");
}

if (contador >= Integer.parseInt(campoEntrada.getText())){
reloj.stop();
botonEmpezar.setEnabled(true);
}
}
}

// 8. Escucha de los botones

class EscuchaBoton implements ActionListener {
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();

if (button.getText() == "Empezar") {
botonEmpezar.setEnabled(false);

//9. Crear una barra de progreso
pMonitor = new ProgressMonitor(panelPrincipal,
"suma en progreso...",
"Nota", 0, 100);

// tiempo que pasa hasta que se muestra en ms
// si no se pone no aparece la barra de progreso
pMonitor.setMillisToPopup( 0 );

campoResultado.setText("");
if (campoEntrada.getText() != " ") {
// tamaño de la barra
pMonitor.setMaximum(Integer.parseInt(
campoEntrada.getText()));
suma = contador = 0;
// empezar a utilizar el reloj
reloj.start();


}
}
else if (button.getText() == "Parar") {
botonEmpezar.setEnabled(true);
// paramos el reloj y cerramos el monitor
reloj.stop();
pMonitor.close();
campoResultado.setText("");
suma = contador = 0;
}
}
}
}



public class Principal extends javax.swing.JFrame {
// private JFrame ventana;

/** Creates new form Principal */
public Principal() {
initComponents();

}



/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jButton1.setText("Iniciar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jButton2.setText("Parar");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(26, 26, 26)
.addComponent(jButton1)
.addGap(18, 18, 18)
.addComponent(jButton2)
.addContainerGap(24, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(77, 77, 77)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2))
.addContainerGap(20, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
/* JFrame ventana = new JFrame();
PanelProgreso progress = new PanelProgreso();
ventana.getContentPane().add(progress, BorderLayout.CENTER);
ventana.setSize(400, 150);
ventana.setVisible(true);
ventana.setEnabled(true);
* */
VentanaProgreso ventana = new VentanaProgreso();
ventana.setVisible(true);
for(int i=0;i<10000;i++){
System.out.println("Se imprime.....ded.e.d.ed.e.");
}




}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Principal().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
// End of variables declaration

}

 

Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados