JLabel calendario

blz cara …
se vc puder, manda a classe ai depois ok ?
vlw

/*
 * LabelCalendario.java
 *
 * Created on 26 de Março de 2008, 17:26
 */

package teste.calendario;

import java.awt.Color;
import java.awt.GridLayout;
import java.text.DateFormatSymbols;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 *
 * @author  Diego Goergen
 */
public class LabelCalendario extends javax.swing.JFrame {
      
      /** Painel com o Calendário. */
      private JPanel calendario;
      /** Calendário da data sendo mostrada.  */
      private Calendar data;
      
      /** Creates new form LabelCalendario */
      public LabelCalendario() {
	    initComponents();
	    
	    this.data = new GregorianCalendar();
	    
	    update();
	    
      }
      
      /**
       * Atualiza os dados
       */
      private void update(){
	    jLabel1.setText(pegaDataDMY(this.data));
	    jLabel1.setToolTipText(pegaDataExtenso(this.data));
	    carregaCalendario(this.data);
      }
      
      private static String pegaDataDMY(Calendar c){
	    SimpleDateFormat sdf;
	    sdf = new SimpleDateFormat("dd'/'MM'/'yyyy");
	    String data = sdf.format( c.getTime() );
	    
	    return data;
      }
      
      private static String pegaDataExtenso(Calendar c){
	    SimpleDateFormat sdf;
	    sdf = new SimpleDateFormat("dd 'de' MMMMM 'de' yyyy");
	    String data = sdf.format( c.getTime() );
	    
	    return data;
      }
      
      
      /** This method is called from within the constructor to
       * initialize the form.
       * WARNING: Do NOT modify this code. The content of this method is
       * always regenerated by the Form Editor.
       */
      // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          
      private void initComponents() {
            java.awt.GridBagConstraints gridBagConstraints;

            jLabel1 = new javax.swing.JLabel();
            jButtonAumentaDia = new javax.swing.JButton();
            jButtonDiminuiDia = new javax.swing.JButton();
            jButtonAumentaMes = new javax.swing.JButton();
            jButtonDiminuiMes = new javax.swing.JButton();
            jButtonAumentaAno = new javax.swing.JButton();
            jButtonDiminuiAno = new javax.swing.JButton();

            getContentPane().setLayout(new java.awt.GridBagLayout());

            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jLabel1.setText("Data");
            jLabel1.addMouseListener(new java.awt.event.MouseAdapter() {
                  public void mouseClicked(java.awt.event.MouseEvent evt) {
                        jLabel1MouseClicked(evt);
                  }
            });

            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 4;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
            getContentPane().add(jLabel1, gridBagConstraints);

            jButtonAumentaDia.setText(">");
            jButtonAumentaDia.setToolTipText("Aumentar 1 dia");
            jButtonAumentaDia.addActionListener(new java.awt.event.ActionListener() {
                  public void actionPerformed(java.awt.event.ActionEvent evt) {
                        jButtonAumentaDiaActionPerformed(evt);
                  }
            });

            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 6;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
            getContentPane().add(jButtonAumentaDia, gridBagConstraints);

            jButtonDiminuiDia.setText("<");
            jButtonDiminuiDia.setToolTipText("Diminuir 1 dia");
            jButtonDiminuiDia.addActionListener(new java.awt.event.ActionListener() {
                  public void actionPerformed(java.awt.event.ActionEvent evt) {
                        jButtonDiminuiDiaActionPerformed(evt);
                  }
            });

            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 2;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
            getContentPane().add(jButtonDiminuiDia, gridBagConstraints);

            jButtonAumentaMes.setText(">>");
            jButtonAumentaMes.setToolTipText("Aumentar 1 m\u00eas");
            jButtonAumentaMes.addActionListener(new java.awt.event.ActionListener() {
                  public void actionPerformed(java.awt.event.ActionEvent evt) {
                        jButtonAumentaMesActionPerformed(evt);
                  }
            });

            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 7;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
            getContentPane().add(jButtonAumentaMes, gridBagConstraints);

            jButtonDiminuiMes.setText("<<");
            jButtonDiminuiMes.setToolTipText("Diminuir 1 m\u00eas");
            jButtonDiminuiMes.addActionListener(new java.awt.event.ActionListener() {
                  public void actionPerformed(java.awt.event.ActionEvent evt) {
                        jButtonDiminuiMesActionPerformed(evt);
                  }
            });

            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 1;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
            getContentPane().add(jButtonDiminuiMes, gridBagConstraints);

            jButtonAumentaAno.setText(">>>");
            jButtonAumentaAno.setToolTipText("Aumentar 1 ano");
            jButtonAumentaAno.addActionListener(new java.awt.event.ActionListener() {
                  public void actionPerformed(java.awt.event.ActionEvent evt) {
                        jButtonAumentaAnoActionPerformed(evt);
                  }
            });

            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 8;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
            getContentPane().add(jButtonAumentaAno, gridBagConstraints);

            jButtonDiminuiAno.setText("<<<");
            jButtonDiminuiAno.setToolTipText("Diminuir 1 ano");
            jButtonDiminuiAno.addActionListener(new java.awt.event.ActionListener() {
                  public void actionPerformed(java.awt.event.ActionEvent evt) {
                        jButtonDiminuiAnoActionPerformed(evt);
                  }
            });

            gridBagConstraints = new java.awt.GridBagConstraints();
            gridBagConstraints.gridx = 0;
            gridBagConstraints.gridy = 1;
            gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
            getContentPane().add(jButtonDiminuiAno, gridBagConstraints);

            java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            setBounds((screenSize.width-495)/2, (screenSize.height-213)/2, 495, 213);
      }// </editor-fold>                        
      
      private void jButtonAumentaAnoActionPerformed(java.awt.event.ActionEvent evt) {                                                  
	    this.data.add(Calendar.YEAR, 1);
	    update();
      }                                                 
      
      private void jButtonDiminuiAnoActionPerformed(java.awt.event.ActionEvent evt) {                                                  
	    this.data.add(Calendar.YEAR, -1);
	    update();
      }                                                 
      
      private void jButtonDiminuiMesActionPerformed(java.awt.event.ActionEvent evt) {                                                  
	    this.data.add(Calendar.MONTH, -1);
	    update();
      }                                                 
      
      private void jButtonAumentaMesActionPerformed(java.awt.event.ActionEvent evt) {                                                  
	    this.data.add(Calendar.MONTH, 1);
	    update();
      }                                                 
      
      private void jButtonDiminuiDiaActionPerformed(java.awt.event.ActionEvent evt) {                                                  
	    this.data.add(Calendar.DAY_OF_MONTH, -1);
	    update();
      }                                                 
      
      private void jButtonAumentaDiaActionPerformed(java.awt.event.ActionEvent evt) {                                                  
	    this.data.add(Calendar.DAY_OF_MONTH, 1);
	    update();
      }                                                 
      
      private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {                                     
	    // Como eu crio um novo sem parâmetros, é para o dia que estiver na classe.
	    mostraCalendario();
      }                                    
      
      
      private void mostraCalendario(){
	    mostraCalendario(this.data);
      }
      
      /**
       * Retorna o nome do mês passado como parâmetro.
       */
      private static String getNomeMes(int mes){
	    DateFormatSymbols dfs = new DateFormatSymbols();
	    return dfs.getMonths()[mes];
      }
      
	/**
	 * Mostra o calendário do mês da data passada.
	 * @param calendar 
	 */
      private void mostraCalendario(Calendar calendar){
	    
	    String title = "Calendário " + getNomeMes( this.data.get(Calendar.MONTH) ) + " de " + this.data.get(Calendar.YEAR);
	    
	    JOptionPane.showMessageDialog(this, this.calendario, title, JOptionPane.PLAIN_MESSAGE);
      }
      
      private void carregaCalendario(final Calendar calendar) {
	    // Aqui é a parte de começar a carregar o painel
	    JLabel[][] days = carregaMatrizLabels();
	    carregaDatas(days, calendar);
	    this.calendario = carregaPainelDias(days);
      }
      
      /**
       * Carregar os labels passados em um painel...
       * @param days Os Labels para pôr no painel
       * @return O painel preenchido com os Labels
       */
      private static JPanel carregaPainelDias(final JLabel[][] days) {
	    
	    JPanel painelDias = new JPanel(new GridLayout(7, 7, 0, 0)); // Crio painel com o Layout
	    
	    for (int i = 0; i < 7; i++){
		  for (int j = 0; j < 7; j++){
			painelDias.add(days[i][j]); // Adiciono os labels...
		  }
	    }
	    
	    return painelDias;
      }
      
      /**
       * Crio uma matriz de labels vazios, sendo que a primeira linha possui os Dias da semana, para funcionar como um título.
       * @return Matriz de JLabel
       */
      private static JLabel[][] carregaMatrizLabels() {
	    
	    String[] DiasSemana = new String[] { "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb" };
	    
	    JLabel[][] days = new JLabel[7][7]; // Matriz com os dias
	    
	    // Coloco os títulos ( Dias da semana )
	    for (int i = 0; i < 7; i++) {
		  days[0][i] = new JLabel(DiasSemana[i], JLabel.RIGHT);
	    }
	    
	    // Carrego os labels vazios por enquanto
	    for (int i = 1; i < 7; i++){
		  for (int j = 0; j < 7; j++) {
			days[i][j] = new JLabel(" ", JLabel.RIGHT);
		  }
	    }
	    
	    return days;
      }
      
      /**
       * Aqui a mágica acontece... ;)
       * Carrega os dias corretos em cada label.
       * @param days Matriz de labels
       */
      private static void carregaDatas(JLabel[][] days, Calendar c) {
	    
	    Calendar calendar = (Calendar) c.clone(); // Preciso clonar, porque vou setar o dia para 1, e não posso alterar o Calendar que veio de parâmetro
	    calendar.set(Calendar.DAY_OF_MONTH, 1); // Seto no primeiro dia do mês atual, para começar a contagem corretamente.
	    
	    int offset = calendar.get(Calendar.DAY_OF_WEEK) - Calendar.SUNDAY; // A distância do início da coluna (Para não errar os dias da semana...)
	    int lastDay = calendar.getActualMaximum(Calendar.DATE); // O último dia do mês atual
	    
	    // Do primeiro ao último dia, vai carregando!
	    for (int i = 0; i < lastDay; i++){
		  days[((i + offset) / 7) + 1][(i + offset) % 7].setText(String.valueOf(i + 1)); // A linha será a parte inteira da divisão por 7, a coluna será o resto...
		  if ( (i+1) == c.get(Calendar.DAY_OF_MONTH)){
			days[((i + offset) / 7) + 1][(i + offset) % 7].setForeground(Color.RED); // marca o dia atual com uma fonte vermelha
		  }
	    }
      }
      
      
      /**
       * @param args the command line arguments
       */
      public static void main(String args[]) {
	    java.awt.EventQueue.invokeLater(new Runnable() {
		  public void run() {
			new LabelCalendario().setVisible(true);
		  }
	    });
      }
      
      // Declaração de variáveis - não modifique                     
      private javax.swing.JButton jButtonAumentaAno;
      private javax.swing.JButton jButtonAumentaDia;
      private javax.swing.JButton jButtonAumentaMes;
      private javax.swing.JButton jButtonDiminuiAno;
      private javax.swing.JButton jButtonDiminuiDia;
      private javax.swing.JButton jButtonDiminuiMes;
      private javax.swing.JLabel jLabel1;
      // Fim da declaração de variáveis                   
      
}

cara … valeu mesmo …
essa classe com ctz vai ser necessaria futuramente :wink:
alias, ja esta sendo necessaria aiuehaeuia :lol:

Procura o JCalendar.