Seu Curso

  • Full Screen
  • Wide Screen
  • Narrow Screen
  • Increase font size
  • Default font size
  • Decrease font size

Construindo calendário usando JTable

Imprimir
Avaliação do Usuário: / 8
PiorMelhor 

Parece bobeira, mais eis uma coisa que é útil em certos tipos de aplicações: calendário. Dá para desenvolver um monte de coisas baseando-se em um calendário e essas coisas tornam o uso do sistema mais fluido, fácil e atraente.

O código é simples e pode ser melhorado. Basta ter, dois jTextField, um botão e uma jTable chamada tabela em seu formulário e nas variáveis mês e ano atribuir o valor do mês e do ano que deseja exibir:

 int mes = Integer.parseInt(jTextField1.getText());
 int ano = Integer.parseInt(jTextField2.getText());
 DefaultTableModel modelo = new DefaultTableModel();
 modelo.addColumn("D");
 modelo.addColumn("S");
 modelo.addColumn("T");
 modelo.addColumn("Q");
 modelo.addColumn("Q");
 modelo.addColumn("S");
 modelo.addColumn("S");
 tabela.setModel(modelo);
 DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();
 centralizado.setHorizontalAlignment(SwingConstants.CENTER);
 int diasmes = 0;
 if((mes == 1) || (mes == 3)  ||
 (mes == 5) || (mes == 7)  ||
 (mes == 8) || (mes == 10) ||
 (mes == 12))                  diasmes = 31;
 if((mes == 4) || (mes == 6) ||
 (mes == 9) || (mes == 11))    diasmes = 30;
 if(mes == 2)  diasmes = 28;
 modelo.addRow(new String[modelo.getColumnCount()]);
 for(int i=1;i<=diasmes;i++) {
 if(diadaSemana(i + "/" + mes + "/" + ano).equals("Domingo"))
 tabela.setValueAt("" + i, tabela.getRowCount()-1, 0);
 if(diadaSemana(i + "/" + mes + "/" + ano).equals("Segunda-feira"))
 tabela.setValueAt("" + i, tabela.getRowCount()-1, 1);
 if(diadaSemana(i + "/" + mes + "/" + ano).equals("Terça-feira"))
 tabela.setValueAt("" + i, tabela.getRowCount()-1, 2);
 if(diadaSemana(i + "/" + mes + "/" + ano).equals("Quarta-feira"))
 tabela.setValueAt("" + i, tabela.getRowCount()-1, 3);
 if(diadaSemana(i + "/" + mes + "/" + ano).equals("Quinta-feira"))
 tabela.setValueAt("" + i, tabela.getRowCount()-1, 4);
 if(diadaSemana(i + "/" + mes + "/" + ano).equals("Sexta-feira"))
 tabela.setValueAt("" + i, tabela.getRowCount()-1, 5);
 if(diadaSemana(i + "/" + mes + "/" + ano).equals("Sábado")) {
 tabela.setValueAt("" + i, tabela.getRowCount()-1, 6);
 modelo.addRow(new String[modelo.getColumnCount()]);
 }
 }
 tabela.getColumnModel().getColumn(0).setCellRenderer(centralizado);
 tabela.getColumnModel().getColumn(1).setCellRenderer(centralizado);
 tabela.getColumnModel().getColumn(2).setCellRenderer(centralizado);
 tabela.getColumnModel().getColumn(3).setCellRenderer(centralizado);
 tabela.getColumnModel().getColumn(4).setCellRenderer(centralizado);
 tabela.getColumnModel().getColumn(5).setCellRenderer(centralizado);
 tabela.getColumnModel().getColumn(6).setCellRenderer(centralizado);

E a função auxiliar para retornar o nome do dia da semana:

 /**
 * Retorna o dia da semana por extenso, por exemplo, "Domingo", "Segunda"...
 * @param dia data a ter o dia da semana retornado
 * @return dia da semana por extenso
 */
 public String diadaSemana(String dia) {
 //Seta a localizaçao para Brasil, independente das configuracoes regionais
 String[] DIA_SEMANA_EXTENSO = new DateFormatSymbols(new Locale("pt", "BR")).getWeekdays();
 Date date = null;
 String data = dia;
 String formato = "dd/MM/yyyy";
 //isso dá maior flexibilidade e certeza que a data vai estar no formato desejado
 SimpleDateFormat df = new SimpleDateFormat(formato);
 try {
 date =  df.parse(data);
 }
 catch (ParseException pe) {
 }
 Calendar c = Calendar.getInstance();
 c.setTime(date);
 String diaDaSemana = DIA_SEMANA_EXTENSO[c.get(Calendar.DAY_OF_WEEK)];
 return diaDaSemana;
 }

 

Adicionar comentário


Código de segurança
Atualizar

You are here: