Barra de Progreso en Java con Fondo

   Hace poco publiqué como hacer una "Barra de Progreso en Java" (con contador), pero fue algo simple y sencillo, hace poco me preguntaron ¿y si quiero colocarle un fondo como hago?. Bien, la respuesta es fácil de entender, simplemente agregamos una etiqueta a nuestro Layout para que justo debajo de esta se cargue, algo como esto:
//Creamos la etiqueta
JLabel Etiqueta = new JLabel();
...
//Seteamos el Layout (posición)
getContentPane().add(Etiqueta, BorderLayout.CENTER);
   Entonces sabiendo esto, podemos guiarnos de la entrada "Imagen de fondo en Java", por lo que nuestra definición para la imagen quedaría así:
Etiqueta.setIcon(new ImageIcon("carlitoxenlaweblogo.png"));
   Teniendo como resultado una barra de progreso con una imagen de carga.
import javax.swing.*;
import java.awt.*;

public final class PantallaCargando extends JWindow {
    BorderLayout Layout = new BorderLayout();
    JLabel Etiqueta = new JLabel();
    JPanel PanelInferior = new JPanel();
    FlowLayout PanelFlowLayout = new FlowLayout();
    JProgressBar Barra = new JProgressBar();

    public PantallaCargando() {
        dibujaVentana();
        setLocationRelativeTo(null);
        setProgresoMax(100);
        setVisible(true);
        velocidadDeCarga(99999);
    }

    public void dibujaVentana() {
        Etiqueta.setIcon(new ImageIcon("carlitoxenlaweblogo.png")); //Aqui el nombre del archivo (imagen)
        getContentPane().setLayout(Layout);
        PanelInferior.setLayout(PanelFlowLayout);
        PanelInferior.setBackground(Color.BLACK);
        getContentPane().add(Etiqueta, BorderLayout.CENTER);
        getContentPane().add(PanelInferior, BorderLayout.SOUTH);
        PanelInferior.add(Barra, null);
        pack();
    }

    public void setProgresoMax(int maxProgress){
        Barra.setMaximum(maxProgress);
    }

    public void setProgreso(int progress) {
        final int progreso = progress;
        Barra.setValue(progreso);
    }

    public void setProgreso(String mensaje, int progress) {
        final int progreso = progress;
        final String elMensaje = mensaje;
        setProgreso(progress);
        Barra.setValue(progreso);
        setMensaje(elMensaje);
    }

    private void setMensaje(String mensaje) {
        if (mensaje==null){
            mensaje = "";
            Barra.setStringPainted(false);
        } else{
            Barra.setStringPainted(true);
        } Barra.setString(mensaje);
    }

    public void velocidadDeCarga(int tiempo) {
        for (int i = 0; i <= 100; i++) {
            for (long j=0; j < tiempo; ++j) {
                String barra = " " + (j + i);
            }
            setProgreso("Cargando" + i, i);
        }
        dispose();
    }
    
    @SuppressWarnings("ResultOfObjectAllocationIgnored")
    public static void main(String[] args) {
        new PantallaCargando();
    }
}
   NOTA: recuerda colocar la imagen en el mismo directorio del programa para que este pueda cargarla.


2 Comentarios

Escribir Comentario
Anónimo
AUTOR
25 de abril de 2012, 10:45 delete

SALUDOS QUISIERA SABER COMO LIMITAR UN JTEXFIELD PARA SOLO PERMITA UN SOLA LETRA PREDETERMINDA, ES DECIR, POR EJEMPLO LA LETRA "A". GRACIAS DE ANTE MANO.

Responder
avatar
2 de mayo de 2012, 14:27 delete

Si se trata de PHP revisa esta entrada: http://carlitoxenlaweb.blogspot.com/2010/08/solo-numeros-en-input.html

Si es de Java puedes simplemente crear un listener y agregarlo al JTextField, algo como esto:

JTextField1.addKeyListener(new Comprobar());

public class Comprobar extends KeyAdapter {
public void keyTyped ( KeyEvent evt ){
if(JTextField.getText().equals("A"){
//Se apreto la tecla "A"
} else {
//Se apreto otra tecla
}
}
}

Espero se entienda la idea, Saludos!

Responder
avatar

Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.

Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión