JLabel calendario

23 respostas
J

Eai pessoal, blz?

Queria saber como faz um calendario tipo igual do windows ?
na verdade vai ser assim: no label, tem as horas … ai, qdo o usuario clica nesse label, mostra o mês inteiro … alguem sabe como faz isso aew ?

vlw

23 Respostas

J

bom não entendi direito sua duvida… se já fez o label com as horas? então agora é só por no action de mouse clik do label para abrir um outro painel que vai mostrar o mês e o ano.

T

Cria um label(com as horas) visível e um painel (com o calendário inteiro) invisível, e no evento de clique em cima do label, dá um setVisible(true) no painel.

J

blz ? … entendi o esquema … mas como faz o calendario inteiro ? e mais uma coisa: qual evento de clique em cima do label é utilizado ? o actionPerformed ?

R

Não sei já vem “implementado de fábrica”. Mas existem várias opções na net.

T

blz ? … entendi o esquema … mas como faz o calendario inteiro ? e mais uma coisa: qual evento de clique em cima do label é utilizado ? o actionPerformed ?

Tem o evento onMouseClick().

Usa NetBeans?? Tem no designer dele…

O código vai ficar mais ou menos assim:

labelHoras.addMouseListener(new java.awt.event.MouseAdapter() {
                  public void mouseClicked(java.awt.event.MouseEvent evt) {
                        mostrarCalendario(evt);
                  }
            });

private void mostrarCalendario(MouseEvent evt){
            if (evt.getClickCount() == 2){ // No duplo clique
		  painelCalendario.setVisible(true);
	    }
}
J

blz ? … entendi o esquema … mas como faz o calendario inteiro ? e mais uma coisa: qual evento de clique em cima do label é utilizado ? o actionPerformed ?

Tem o evento onMouseClick().

Usa NetBeans?? Tem no designer dele…

nao uso netbeans nao … eclipse :wink:
mas onde esta esse evento onMouseClick() ?

T

Não mexo com Eclipse, então não sei direito… é o nome não é onMouseClick()… :oops:

Coloquei um código ali em cima, dá uma olhada… Assim tu adiciona a ação ao clique

J
thegoergen:
JamesBond:
thegoergen:
Cria um label(com as horas) visível e um painel (com o calendário inteiro) invisível, e no evento de clique em cima do label, dá um setVisible(true) no painel.

blz ? .. entendi o esquema .... mas como faz o calendario inteiro ? e mais uma coisa: qual evento de clique em cima do label é utilizado ? o actionPerformed ?

Tem o evento onMouseClick().

Usa NetBeans?? Tem no designer dele...

O código vai ficar mais ou menos assim:
labelHoras.addMouseListener(new java.awt.event.MouseAdapter() {
                  public void mouseClicked(java.awt.event.MouseEvent evt) {
                        mostrarCalendario(evt);
                  }
            });

private void mostrarCalendario(MouseEvent evt){
            if (evt.getClickCount() == 2){ // No duplo clique
		  painelCalendario.setVisible(true);
	    }
}

vlw ae .. vou dar uma olhada :wink:

T

Para montar o painel tu vai ter que usar bastante a classe java.util.Date e java.util.Calendar.

Cria um painel com GridLayout de 7 colunas, e vai adicuionando dias… acho que assim que eu faria…

J

thegoergen:
Para montar o painel tu vai ter que usar bastante a classe java.util.Date e java.util.Calendar.

Cria um painel com GridLayout de 7 colunas, e vai adicuionando dias… acho que assim que eu faria…

humm … vou tentar cara … qq coisa, do um toque aq :wink:

J

E ai pessoal blz ?
resolvi ressuscitar o topico … :slight_smile:

entao, eu nao to conseguindo fazer aparecer o calendario do mês atual no frame … nao tem como fazer igual ao relogio ? tipo, no relogio é so usar o date … no calendario nao tem como ?

T

Como assim. Não consegue colocar o painel no Frame??

M

Se puder colocar o código ajudaria.

abçs.

T

A idéia básica é pegar o mês, criando um Calendar novo, e ir passando com um FOR por todos os dias, colocando eles na coluna certa, do dia da semana…

Fica difícil saber o problema, tente explicar um pouco mais… E, se você já resolveu, poste a solução, ou ao menos diga que foi resolvido…

J

eu ja cooloquei o panel no frame … minha duvida eh a seguinte: como faço pra colocar o calendario no panel ?
ai esta o codigo

package calendario;

import java.awt.Component;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
   
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import calendario.Relogio.ClockRunnable;

public class Relogio {

	private static final long serialVersionUID = 1L;

	JPanel p1 = new JPanel();
	
    private JLabel lblHora, lblData;
    private JPanel pCal;
    int flag=0;
    
    // Formatador da hora
    private static final DateFormat FORMATO = new SimpleDateFormat("HH:mm:ss");
	
	public Relogio() {
		
        p1.setLayout(new FlowLayout());
        p1.add(getLblData());
        p1.add(getLblHora());
  
        // Inicia a thread do relógio.
        Thread clockThread = new Thread(new ClockRunnable(), "Clock thread");
        clockThread.setDaemon(true);
        clockThread.start();
		
	}
	
    private JLabel getLblHora() {
        if (lblHora == null) {
            lblHora = new JLabel();
            lblHora.addMouseListener(new java.awt.event.MouseAdapter() {
           	 public void mouseClicked(java.awt.event.MouseEvent evt) {
           		 if(flag == 0) {
           			 mostrarCalendario(evt);
           		 	 flag = 1;
           		 }
             }
          });
        }
        return lblHora;
    }
    
    private JLabel getLblData() {
        if (lblData == null) {
            lblData = new JLabel();
            SimpleDateFormat sdf;
            sdf = new SimpleDateFormat("EEEE', 'dd 'de' MMMM 'de' YYYY");
            String data = sdf.format(new Date());
            lblData.add(data);
            lblData.addMouseListener(new java.awt.event.MouseAdapter() {
           	 public void mouseClicked(java.awt.event.MouseEvent evt) {
           		 if(flag == 0) {
           			 mostrarCalendario(evt);
           		 	 flag = 1;
           		 }
             }
          });
        }
        return lblHora;
    }
    
    private void mostrarCalendario(MouseEvent evt) {
        if (evt.getClickCount() == 1){ // No unico clique
            final JFrame frame = new JFrame();
            pCal = new JPanel();

            frame.add(pCal);
       	 	
            frame.addWindowListener(
               	 new WindowListener() {
               			public void windowClosing(WindowEvent e) {
               				flag=0;
               				frame.dispose();
               			}
               			public void windowActivated(WindowEvent e) { }
               			public void windowClosed(WindowEvent e) { }
               			public void windowDeactivated(WindowEvent e) { }
               			public void windowDeiconified(WindowEvent e) { }
               			public void windowIconified(WindowEvent e) { }
               			public void windowOpened(WindowEvent e) { }
               	 }
            );
       	 	
       	 	frame.setSize(300, 300);
       	 	frame.setResizable(false);
       	 	frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            frame.setVisible(true);
        }
    }
    
    /**
     * Método para atualizar a hora no formulário. Não é thread-safe, portanto,
     * se o utilizado fora da thread da AWT, deve-se utilizar um dos comandos da
     * EventQueue (invokeLater ou invokeAndWait).
     */
    public void setHora(Date date) {
        getLblHora().setText(FORMATO.format(date));
    }
  
    /**
     * Runnable que contém o código que atuará na nossa thread. Basicamente, ele
     * chama o método setHora de segundo em segundo, passando a data atual.
     */
    public class ClockRunnable implements Runnable {
        public void run() {
            try {
                while (true) {
                    // Aqui chamamos o setHora através da EventQueue da AWT.
                    // Conforme dito, isso garante Thread safety para o Swing.
                    EventQueue.invokeLater(new Runnable() {
                        public void run() {
                            // Só podemos chamar setHora diretamente dessa
                            // forma, pois esse Runnable é uma InnerClass não
                            // estática.
                            setHora(new Date());
                        }
                    });
                    // Fazemos nossa thread dormir por um segundo, liberando o
                    // processador para outras threads processarem.
                    Thread.sleep(1000);
                }
            }
            catch (InterruptedException e) {
            }
        }
    }
    
	public JPanel getLayout() {
		return p1;
	}
}
T

Ah… entendi…

Bem. Primeiramente, não faça a criação do JPanel e do JFrame no clique do botão. Imagine, ele irá refazer todo o JFrame a cada clique… crie antes, mostre apenas no clique.

Agora… Para criar o painel.

Trabalhe com uma matriz de JLabel, de 7 colunas… E neles você coloca os dias.

Depois, cria um painel com GridLayout também de 7 colunas (e acho que 6 linhas tá bom… não tenho certeza).

Para preencher o painel, crie um 2 FORs encadeados que colocam os labels da tua matriz no painel, na posição correta.

Acho que funciona… :slight_smile:

T

Vou fazer algo que eu não deveria fazer, mas devido às minhas dificuldades em passar pro português o que eu faço em java...

private static void mostraCalendario(){
	    JFrame jf = new JFrame("Teste");
	    jf.setSize(500,500);
	    jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	    
	    // Aqui é a parte de começar a carregar o painel
	    JLabel[][] days = carregaMatrizLabels();
	    carregaDatas(days);
	    JPanel daysGrid = carregaPainelDias(days);
	    
	    jf.getContentPane().add(daysGrid);
	    
	    jf.setVisible(true);
      }
      
	/**
	 * 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) {
	    
	    // Como eu crio um novo sem parâmetros, é para o dia de hoje
	    Calendar calendar = new GregorianCalendar();
	    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...
	    }
      }

Tenta isso aí. coloca no teu código e chama a função mostraCalendario(). Poste aí se funcionoou ou não...

J

cara … funcionou … valeu mesmo … brigadao :wink:

depois vou dar uma olhada melhor no codigo pra ver como vc fez … vlw

T

JamesBond:
cara … funcionou … valeu mesmo … brigadao :wink:

depois vou dar uma olhada melhor no codigo pra ver como vc fez … vlw

Eu tentei comentar o máximo que eu pude, se ainda ficar algum dúvida, poste aí. Eu posso mandar a classe completa, se tu quiser…

É um JFrame com um label indicando o dia no formato dd/MM/yyyy, toolTip com data por extenso, e no clique ele abre o calendário…

J

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

T
/*
 * 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                   
      
}
J

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

S

Procura o JCalendar.

Criado 25 de março de 2008
Ultima resposta 27 de mar. de 2008
Respostas 23
Participantes 6