lunes, 22 de febrero de 2016

011.- Uso de Barras de Desplazamiento (JScrollBar) - Java y NetBeans

A continuación explico cómo usar las Barras de Desplazamiento (JScrollBars):

La clase JScrollBar permite crear barras de desplazamiento independientes, como la que se muestra a continuación:


La barra tiene un valor mínimo, que se consigue haciendo que el recuadro de la barra de desplazamiento esté pegado a la parte izquierda.



Cuando se pulsa algunos de los botones de la barra de desplazamiento, el valor de la barra se incrementa / decrementa poco a poco. A este incremento / decremento lo llamaremos incremento unitario.



Cuando se pulsa directamente sobre la barra, el valor de la barra se incrementa / decrementa en mayor cantidad. A este incremento / decremento lo llamaremos incremento en bloque.



A continuación mostramos el funcionamiento de las Barras de Desplazamiento a través de un ejemplo en NetBeans:

  1. Crea un nuevo proyecto.

  1. Dentro de Source Package crea un Java Package y llamalo paqueteInicial.


  1. Dentro de paqueteInicial crea un JFrame Form y nombralo VentanaInicial.

  1. Dentro de VentanaInicial añade una Barra de Desplazamiento (JScrollBar) y nómbrala desValor.



  1. La barra de desplazamiento aparecerá en vertical. Use la propiedad de la barra llamada orientation para hacer que la barra aparezca en posición horizontal.



  1. Agrega también una etiqueta con borde y nómbrala etiValorBarra.

  1. El diseño de la ventana debe ser el siguiente:



  1. Interesa que cuando el usuario cambie de alguna manera la barra de desplazamiento, en la etiqueta aparezca el valor de la barra.

Para ello, se debe programar el evento adjustmentValueChanged de la barra de desplazamiento.

         En este evento programemos lo siguiente:

etiValorBarra.setText("El valor de la barra de despazamiento es: " + desValor.getValue());


  1. Como ves, se coloca en la etiqueta el valor de la barra. El valor de la barra se obtiene con el método getValue. Ejecuta el programa para ver su funcionamiento.



  1. Sigamos aprendiendo más de las Barras de Desplazamiento. Se pide que cambies las siguientes propiedades de la barra:

minimum – Permite asignar el valor mínimo de la barra. Cámbiala a 40
maximum – Permite asignar el valor máximo de la barra. Cámbiala a 80



unitIncrement – Permite cambiar el incremento unitario. Cámbiala a 2.



blockIncrement – Permite cambiar el incremento en bloque. Cámbiala a 5.



visibleAmount – Permite cambiar el ancho del recuadro de la barra. Escribe un 5.




  1. Ejecuta ahora el programa y comprueba su funcionamiento:







  1. Tal como se ha indicado anteriormente, pasa algo raro con la barra de desplazamiento cuando esta está al máximo. Se esperaba que alcanzara el valor 80, y sin embargo, el valor máximo alcanzado fue de 75. La explicación es la siguiente:



*        Nuestra barra tiene un valor máximo de 80.

**      Sin embargo, el valor de la barra viene indicado por el lado izquierdo del recuadro interno.

***     Como el recuadro interno tiene un ancho definido a través de la propiedad visibleAmount, el valor máximo que la barra puede alcanzar es de:

Valor = (Valor Máximo) – (Ancho del recuadro)

Es decir,

         Valor alcanzable = 80 – 5 = 75


  1. A través del método setValue de la barra de desplazamiento se puede asignar un valor inicial a la barra. Programe en el constructor de su programa lo necesario para que la barra de desplazamiento tenga un valor de 65 al empezar el programa.


CONCLUSIÓN

Las JScrollBars son Barras de Desplazamiento independientes. Al igual que los JSliders, las JScrollBars tienen un valor concreto, que puede ser obtenido a través de su método getValue.

Entre las propiedades y características programables de una barra de desplazamiento, tenemos las siguientes:

         - Valor mínimo (propiedad minimum).
         - Valor máximo (propiedad maximum).
         - Incremento unitario (propiedad unitIncrement).
         - Incremento en bloque (propiedad blockIncrement).
         - Tamaño del recuadro de la barra (propiedad visibleAmount).



1 comentario: