Visual – JSpinner – NumberModel, ListModel, DateModel, Calendar – Java

Publicado: 21 de março de 2014 em Java

Em computação, um Spinner  é um elemento de interface gráfica  que permite aumentar ou diminuir um valor, geralmente, de um parâmetro numérico (por exemplo, tamanho ou data) de um objeto quando o usuário pressiona os botões do Spinner. O Spinner normalmente é  usado em conjunto com caixa de texto que permitem inserir ou editar dados diretamente. Dependendo do gerenciador de janela ou aplicação em uso, existem muitos estilos de apresentação gráfica de Spinner.

NumberModel

É uma classe associada ao Spinner que permite parametrizar um modelo baseado em números.

ListModel

É uma classe associada ao Spinner que permite parametrizar um modelo baseada em Arrays.

DateModel

É uma classe associada ao Spinner que permite parametrizar um modelo baseada em datas.

Calendar

A classe Calendar é uma classe abstrata que fornece métodos para a conversão entre um instante específico no tempo e um conjunto de campos de calendário, como YEAR, MONTH, DAY_OF_MONTH, hora, e assim por diante, e para manipular os campos de calendário, como obter a data da próxima semana.

Exemplo:

Neste programa desenvolvemos três modelos de Spinners baseados em cada um dos seus SpinnerModels e extraímos seus valores para uma saída de tela.

Java

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;
import java.util.Date;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerListModel;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;

public class Spinner extends JPanel implements ActionListener
{
	// Declara Labels
	JLabel titulo;
	JLabel texto;
	JLabel numero;
	JLabel lista;
	JLabel ano;

	// Declara Spinners
	JSpinner spinner1;
	JSpinner spinner2;
	JSpinner spinner3;

	// Declara modelos de Spinner
	SpinnerModel numeros;
	SpinnerModel estacao;
	SpinnerModel data;

	// Declara Botão
	JButton botao;

	// Declara Array
	String[] tEstacao = {"Primavera", "Verão", "Outono", "Inverno"};

	Spinner()
	{
		// Cria Componentes
		titulo = new  JLabel("Desenvolvoimento Aberto - JSpinner");
		texto = new JLabel("Texto:");
		numero = new JLabel("Incio= 1, min= 0, max= 10, alimeta= 1");
		lista = new JLabel("Lista de estações do ano");
		ano = new JLabel("inicio= ano atual, min= -10, max= +10, alimenta= 1");

		// Cria Modelos de Spinner
	    numeros = new SpinnerNumberModel(1, 0, 10, 1);
	    estacao = new SpinnerListModel(tEstacao);

	    // Cria um calendario e assoia a um modelo de spinner
	    Calendar calendario =  Calendar.getInstance();
	    Date dataInicial = calendario.getTime();

	    calendario.add(calendario.YEAR , -10);
	    Date minData = calendario.getTime();

	    calendario.add(calendario.YEAR , +20);
	    Date maxData = calendario.getTime();

	    // Cria modelo de Spinner
	    data = new SpinnerDateModel(dataInicial, minData, maxData , 1);

	    // Cria Spinners
		spinner1 = new JSpinner(numeros);
		spinner2 = new JSpinner(estacao);
		spinner3 = new JSpinner(data);

		// Cria botão e seu evento on click
		botao = new JButton("OK");
		botao.addActionListener(this);

		// Cria um Layout
		GridLayout layout = new GridLayout(0,1,5,5);
		setLayout(layout);

		// Adiciona componentes ao painel
		add(titulo);
		add(texto);
		add(numero);
		add(spinner1);
		add(lista);
		add(spinner2);
		add(ano);
		add(spinner3);
		add(botao);

		// Cria uma borda no painel
		setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));

	}

	public void actionPerformed(ActionEvent arg0) {

		// Evento on click do botão
		if (arg0.getSource() == botao)
		{
			texto.setText("Numero: " + String.valueOf(spinner1.getValue()) + " " +
					      "Texto: "  + String.valueOf(spinner2.getValue()) + " " +
					      "Data: "   + String.valueOf(spinner3.getValue()));
		}

	}

	 private static void mostraGui()
	    {
		    // Cria Formulario, adiciona suas propriedades e associa seus componentes
	        JFrame formulario = new JFrame("Lista de Música");
	        formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	        JComponent painel = new Spinner();
	        painel.setOpaque(true);

	        formulario.setContentPane(painel);
	        formulario.pack();
	        formulario.setVisible(true);
	    }

	public static void main(String[] args) {

		// Cria GUI.
		javax.swing.SwingUtilities.invokeLater(new  Runnable()
        {
            @Override
            public void run()
            {
                mostraGui();

            }
        });
   }
}

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s