Clase JScrollPane
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JScrollPane
JScrollPane es un contenedor para componentes que necesiten redimensionarse a través una barra deslizable tanto vertical como horizontalmente, el componente no cambian su tamaño original solo lo que se muestra al final en la pantalla.
Seguramente todos habremos deslizado miles a lo largo de nuestra experiencia con computadoras, sobretodo en internet.
Ejemplo de JScrollPane como contenedor de un JTextArea:
La manera de agregar un componete a un contenedor es siempre la misma y este a su vez necesita ser puesto en otro contenedor o ventana.
Una vez creado el componente y el contenedor JScrollPane la manera de meterlo es con el método setViewPortView(Componente) en lugar de "add":
- JLabel etiqueta = new JLabel(); //Creamos una etiqueta
- Icon imagen = new ImageIcon ("src/imagen01.jpg"); //Creamos una IconImage
- etiqueta.setIcon (imagen); //Ponemos la imagen en la etiqueta
- JScrollPane scroll = new JScrollPane(); //Creamos el contenedor JScrollane
- scroll.setViewportView(etiqueta); //Ponemos la etiqueta en el contenedor
- add(scroll); //agregamos el scroll a otro contenedor o marco
Un Pequeño ejemplo con código:
- import java.awt.*;
- import javax.swing.*;
- public Barra(){
- super("Ejemplo Scroll Pane");
- setSize(250,200);
- setLocationRelativeTo(null);
- // agregando el scrollpane al area de texto
- panelDeslizable.setViewportView(areaTexto);
- // agregando a la ventana el contenedor scrollpane
- setVisible(true);
- }
- new Barra();
- }
- } // Fin de la Clase
El resultado en pantalla será:
Métodos:
- setViewportView(Component cualquiera)
- Agregamos al contendor el componente a scrolear.
- JScrollPane miScrollPane = new JScrollPane();
- miScrollPane.setViewportView(miComponenteGrande);
- Agregamos al contendor el componente a scrolear.
- setComponentOrientation(ComponentOrientation co)
- Determina la orientacion del componente y con eso la posición(a la derecha o izquierda) de la barra deslizable
- Los posibles valores de "co" serán:
- java.awt.ComponentOrientation.LEFT_TO_RIGHT
- java.awt.ComponentOrientation.RIGHT_TO_LEFT
- java.awt.ComponentOrientation.UNKNOWN
- setVerticalScrollBarPolicy(int policy)
- Determina como se visualiza la barra deslizable vertical
- Los posible valores del entero "policy" son:
- JScrollPane.VERTICAL_SCROLLBAR_ALWAYS
- JScrollPane.VERTICAL_SCROLLBAR_NEVER
- JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
- setHorizontalScrollBarPolicy(int policy)
- igual al anterior pero con la barra horizontal
- Los posible valores del entero "policy" son:
- JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS
- JScrollPane.HORIZONTAL_SCROLLBAR_NEVER
- JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
Todos los demás constructores, atributos y métodos en la documentación oficial de java aquí.
Clase JProgressBar
java.lang.Objectjava.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JProgressBar
La clase JProgressBar nos trae una barra de progreso, el problema de este componente Swing es que es necesario entender como funcionan un poquito los "Hilos" o "Thread" (en inglés) que permite que la aplicación ejecute varias tareas en simultaneo como para ir teniendo una idea...
Una barra de progreso se ve asi si es determinada:
Una barra de progreso se ve asi si es determinada:
O si el progreso no está definido puede ser del tipo indeterminado:
Veamos con el siguiente ejemplo.
- La barra de progreso tiene que ser activada a partir de un momento (puede ser desde el inicio mismo de la aplicación) obtaremos por que sea a través de un boton.
- Este boton tiene que estar vigilado por un "Escuchante" para saber cuando se produce el evento.
- Y dentro de las operaciones del mismo evento crearemos un nuevo objeto de la clase Thread (un nuevo hilo) y lo empezamos a hacer que ejecute sus operaciones con el método start que a partir de ese instante el hilo estara funcionando.
- Como parametro del nuevo hilo llamaremos al constructor de otra clase que crearemos y llamaremos "Hilo"
- Esta pequeña clase es hija de Runnable ya que sobreescribiremos el método de esta interface llamado run().
- Dentro del método "correr", que ejecutara cosas, se darña un loop for, de 0 a 100 coincidiendo con los valores mínimos y máximos de la barra de progreso y se irá incrementando de 1 en 1.
- Para lo cual en cada incremento se volvera a configurar el valor de la barra con el método setValue(int n), se vuelve a mostrar en pantalla con el valor actualizado con el método rePaint()
- Por último pero no menos importante, dentro de un bloque try-cath porque se generarám excepciones, haremos que el hilo(Thread) descanse su ejecución unos milisegundo específicos pero el progreso será constante.
Código:
- import javax.swing.*;
- import java.awt.event.*;
- public class Progreso {
- marco.setSize(300, 100);
- marco.setResizable(false); //no permite cambiar el tamaño de la ventana
- marco.setLocationRelativeTo(null); //aparece en el centro de la pantalla
- barra.setBounds(5, 10, 280, 25); //configura posicion x, posicion y
- pulsame.setBounds(5, 40, 140, 25); // ancho y alto
- salir.setBounds(150, 40, 140, 25);
- barra.setStringPainted(true); //Agrega el porcentaje en la barra
- pulsame.addActionListener(new Pulsar());
- salir.addActionListener(new Salir());
- panel.setLayout(null); //no aplicamos un gestor de diseño, los componentes tienen su propio lugar determinado, por defecto es flowlayout
- panel.add(barra);
- panel.add(pulsame);
- panel.add(salir);
- marco.add(panel);
- marco.setVisible(true);
- }
- @Override
- pulsame.setEnabled(false);
- }
- }
- @Override
- }
- }
- @Override
- public void run(){
- for (int i=0; i<=100; i++){
- barra.setValue(i); //cambia el estado de la barra en i unidades
- barra.repaint(); //"repinta" el estado de la barra a el actual
- try{
- }
- }
- }
- }
Resultado en pantalla:
Mètodos:
- setIndeterminate(boolean newValue)
- Determina si se trata de una barra indeterminada haciendolo true.
- setMaximum(int n)
- configura el valor máximo
- setMinimum(int n)
- configura el valor mínimo
- setStringPainted(boolean b)
- muestra el valor expresado en numeros dentro de la misma barra
- setValue(int n)
- configura el valor de la barra de progreso
No hay comentarios:
Publicar un comentario