Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

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:

 

{code}

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);

{/code}

 

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

 

{code}

/**

* 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;

}

{/code}