Java - JSpinner ciclico

 
Vista:
sin imagen de perfil

JSpinner ciclico

Publicado por Agustin (1 intervención) el 11/06/2019 00:40:16
Buenas, necesito hacer que un JSpinner cuando llegue al valor maximo que vendria a ser 10, regrese al valor minimo que seria 1, y no logro encontrar como!!ayuda!!
Todo esto es con Java, en Eclipse
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

JSpinner ciclico

Publicado por Kabuto (1381 intervenciones) el 11/06/2019 15:15:23
Hola, los JSpinner incorporan por defecto un Listener llamado ChangeListener que comunica a su modelo cada cambio que se produce.

Puedes crear un nuevo ChangeListener en el que, cada vez que haya un cambio, compruebe el valor actual del JSpiner.
Si el valor resulta ser 11, es decir, que ya se ha pasado del 10, se lo cambias por valor 1.

Te pongo un ejemplo rápido sencillo para que lo veas funcionando. Espero que te sirva.

Por cierto, no he puesto que si vamos hacia atrás, al pasar de valor 1, debería volver al 10.
Seguro que ahora ya sabrás hacerlo tú mismo.

No se si hay alguna forma más sencilla para poner limites a un JSPiner. No estoy nada familiarizado con este componente y añadirle un nuevo Listener es lo primero que se me ha ocurrido

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package jSPiner;
 
import javax.swing.JFrame;
import javax.swing.JSpinner;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
 
public class Prueba extends JFrame{
 
	JSpinner spiner;
 
	public Prueba() {
		super("Prueba JSpinner");
 
		spiner = new JSpinner();
		spiner.setValue(1);
		spiner.addChangeListener(new Cambiar()); //Le cambiamos su ChangeListener por el nuestro
		getContentPane().add(spiner);
 
		setSize(100, 100);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setVisible(true);
	}
 
	public static void main(String[] args) {
		new Prueba();
	}
 
	class Cambiar implements ChangeListener {
		@Override
		public void stateChanged(ChangeEvent e) {
			JSpinner spin = (JSpinner) e.getSource();
			if (spin.getValue().equals(11)) //Cuando se supera el valor 10, vuelve al 1
				spin.setValue(1);
		}
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar