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
alias, ja esta sendo necessaria aiuehaeuia :lol:
Procura o JCalendar.