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}