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.
Valor mínimo
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.
Decrementa el valor poco a poco (incremento unitario) Incrementa el valor poco a poco (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.
Al pulsar directamente sobre la barra se decrementa en mayor cantidad (incremento en bloque)
Al pulsar directamente sobre la barra se incremente en mayor cantidad (incremento en bloque)
Ejercicio guiado
1. Para comprender mejor el funcionamiento de las barras de desplazamiento se creará un proyecto nuevo.
2. Añade en el proyecto una barra de desplazamiento (JScrollBar) y llámala desValor.
3. 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.
4. Añade también una etiqueta con borde y llámala etiValor.
5. La ventana debe quedar más o menos así:
6. 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 programa lo siguiente:
etiValor.setText("El valor es: "+desValor.getValue());
7. 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.
Pulsa aquí y observa como el valor cambia poco a poco…
Pero si pulsas aquí el valor cambia en mayor cantidad…
8. Sigamos estudiando el programa. Se pide que cambies las siguientes propiedades de tu barra:
Minimum – Permite asignar el valor mínimo de la barra. Escribe un 50
Maximum – Permite asignar el valor máximo de la barra. Escribe un 150
UnitIncrement – Permite cambiar el incremento unitario. Escribe un 2.
BlockIncrement – Permite cambiar el incremento en bloque. Escribe un 20.
VisibleAmount – Permite cambiar el ancho del recuadro de la barra. Escribe un 5.
9. Ejecuta ahora el programa y comprueba su funcionamiento:
Si llevas la barra de desplazamiento al mínimo, su valor será de
50, ya que se configuró así con la propiedad minimum
Observa lo que sucede cuando llevas la barra de desplazamiento al máximo: aparece un valor de 145, cuando el valor máximo que asignamos fue de 150 ¿por qué?
10. 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 150, y sin embargo, el valor máximo alcanzado fue de 145. La explicación es la siguiente:
Valor máximo (150) *
Valor de la barra (145) **
5 ***
* Nuestra barra tiene un valor máximo de 150.** 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 = ValorMáximo – Ancho del recuadro.
Es decir,
Valor alcanzable = 150 – 5 = 145
11. 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 70 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 del método getValue.
Entre las 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)