/*
Uso del Spinner, boton y label para digitalizar la hora
*/
package pruebajspinner;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Dimension;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class PruebaJSpinner implements ChangeListener, ActionListener{
private JPanel relojPanel;
private JButton Aceptar;
private JSpinner horas, minutos, segundos;
private JLabel dialogo,dosP1, dosP2;
private JFrame v; //Para la ventana donde se verá todos los componentes (JTextField y JSpinner
public static void main(String[] args)//crea una instancia de esta clase
{
new PruebaJSpinner();
}
public PruebaJSpinner() //crea la ventana con el JSpinner y el JTextField. La visualiza
{
dialogo = new JLabel("Digitalice hora, minutos y segundos");
//creando el panel del reloj--------------------------------------------------------------------------------
relojPanel = new JPanel();
relojPanel.setLayout(new FlowLayout());
horas = new JSpinner(); //se crea el objeto del JSpinner con un valor inicial: 0
horas.setValue(0);
horas.setPreferredSize(new Dimension(40,20)); //el tamaño del Spinner
horas.addChangeListener(this); //si hay cambios en el JSpinner, se activa este escuchador de eventos
minutos = new JSpinner();
minutos.setValue(0);
minutos.setPreferredSize(new Dimension(40,20));
minutos.addChangeListener(this);
segundos = new JSpinner();
segundos.setValue(0);
segundos.setPreferredSize(new Dimension(40,20));
segundos.addChangeListener(this);
dosP2 = new JLabel(":");
dosP1 = new JLabel(":");
relojPanel.add(horas); //añadimos los objetos creados al panel
relojPanel.add(dosP1);
relojPanel.add(minutos);
relojPanel.add(dosP2);
relojPanel.add(segundos);
//----------------------------------------------------------------------------------------------------------
Aceptar = new JButton("Aceptar"); //boton de Aceptar
Aceptar.addActionListener(this);
// Creacion de la ventana con los componentes
v = new JFrame(); //se crea la ventana
v.getContentPane().setLayout(new GridLayout(3,1)); //la conf de la ventana son 3 filas y 1 columna
v.getContentPane().add(dialogo); //introduzco el mensaje en la ventana
v.getContentPane().add(relojPanel); //introduzco el panel del reloj en la ventana
v.getContentPane().add(Aceptar); //introduzco el panel del reloj en la ventana
v.pack();
v.setVisible(true);
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
//manejadores de eventos ---------------------------------------------------------------------------------------
//el "this" en addChangeListener se viene a "este" metodo
@Override
public void stateChanged(ChangeEvent e)
{
if(e.getSource() == horas) //cambios en el Spinner de las horas
{
if((Integer)horas.getValue() > 23)
horas.setValue(00);
if((Integer)horas.getValue() < 0)
horas.setValue(23);
}
if(e.getSource() == minutos) //cambios en el Spinner de los minutos
{
if((Integer)minutos.getValue() > 59)
minutos.setValue(00);
if((Integer)minutos.getValue() < 0)
minutos.setValue(59);
}
if(e.getSource() == segundos) //cambios en el Spinner de los segundos
{
if((Integer)segundos.getValue() > 59)
segundos.setValue(00);
if((Integer)segundos.getValue() < 0)
segundos.setValue(59);
}
}
//el "this" de addActionListener se viene a "este" metodo
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "El tiempo prefijado es " + horas.getValue() + ":" + minutos.getValue() + ":" + segundos.getValue());
}
}