UNIVERSIDAD POLITCNICA DE EL SALVADOR
PROGRAMACIN ORIENTADA A OBJETOS
Componentes de Interface Grafica en Java
Botones JSpinner
El JSpinner es un componente java en el que se presenta una caja de texto con dos flechitas en el lado derecho, una hacia arriba y la otra hacia abajo. En el campo de texto se muestra un valor. Con las flechitas arriba y abajo podemos incrementar o decrementar ese valor.
JSpinner
La clase JSpinner permite crear cuadros como el siguiente:
Son elementos muy comunes en los programas. Y como ya se menciono a travs de los dos botones triangulares se puede hacer que el valor del cuadro aumente o disminuya. Tambin se puede escribir directamente un valor dentro del cuadro.
Ejemplo5
Para realizar este ejemplo debemos de hacer lo siguiente: 1. Cree un nuevo proyecto llamado ejemplo5 2. En el paquete ejemplo5 agregue un nuevo JFRAME FORM y pngale de nombre egra5.
Ejemplo5
3. En el JFRAME egra5 agregue lo siguiente:
3 label (con los nombre: etiTitulo,etiEdad y etiValor) 1 Jspinner, su nombre ser spiValor
Ejemplo5
La ventana tendr el siguiente aspecto:
Ejemplo5
Interesa que cuando cambie el JSpinner (ya sea porque se pulsaron los botones triangulares o porque se escribi dentro) aparezca el valor correspondiente dentro de la etiqueta. Para ello, tendr que programar el evento stateChangeddel Jspinner.
Ejemplo5
En el evento stateChangedintroduzca el siguiente cdigo:
etiValor.setText("El valor es: "+spiValor.getValue().toString());
Como puedes observar, lo que hace el programa es recoger el valor que tiene el JSpinner a travs del mtodo getValue y luego se lo asigna a la etiqueta con el clsico setText. Debes tener en cuenta que el valor devuelto no es un nmero ni una cadena, as que en el ejemplo se ha usado el mtodo toString() para convertirlo a una cadena.
Ejemplo5
Observa como los valores del JSpinner aumentan o disminuyen en 1. Por otro lado, no parece haber un lmite para los valores del JSpinner. La pregunta ahora es: Se puede modificar el contenido del JSpinner de forma que tenga unos valores concretos? La respuesta es s. Veamos como hacerlo:
Ejemplo5
Entra dentro del cdigo del programa y, dentro del constructor, aade este cdigo debajo de initComponents:
SpinnerNumberModel nm = new SpinnerNumberModel();
nm.setMaximum(10); nm.setMinimum(0); spiValor.setModel(nm);
Ejemplo5
Este cdigo hace lo siguiente: El JSpinner, al igual que los JList y los JComboBox, es un objeto que contiene otro objeto modelo, y es el objeto modelo el que contiene los nmeros visualizados en el JSpinner. En el cdigo anterior se crea un modelo para el JSpinner, se definen los valores que contendr, y luego se asigna al JSpinner. Estudiemos las lneas del cdigo:
Ejemplo5
La primera lnea crea un objeto llamado nm. Los objetos de los Jspinner son del tipo SpinnerNumberModel. Necesitars incluir el import correspondiente (al inicio del cdigo importar la clase swing)
Ejemplo5
En la segunda lnea se define como valor mximo del modelo el 10, a travs de un mtodo llamado setMaximum. En la tercera lnea se define como valor mnimo del modelo el 0, a travs de un mtodo llamado setMinimum. Finalmente se asigna el modelo creado al JSpinner. Este cdigo, en definitiva, har que el JSpinner muestre los valores comprendidos entre 0 y 10.
Ejemplo5
Otro modificacin: Cambie el cdigo del constructor por este otro. (Observa que solo se ha aadido una lnea):
SpinnerNumberModel nm = new SpinnerNumberModel();
nm.setMaximum(10); nm.setMinimum(0); nm.setStepSize(2); spiValor.setModel(nm);
Ejemplo5
La lnea aadida es: nm.setStepSize(2); Esta lnea usa un mtodo del modelo del JSpinner que permite definir el valor de cambio del JSPinner. Dicho de otra forma, esta lnea hace que los valores del JSpinner salten de 2 en 2 (puede ser cualquier valor). El modelo del JSpinner tiene tambin un mtodo llamado setValue que permite asignar un valor inicial al modelo. Pruebe a usar este mtodo para hacer que el JSpinner muestre desde el principio el valor 4.
Ejemplo5
Como ya es conocido en la clase principal hay que incluir el siguiente cdigo: