Pessoal, Boa tarde! Alguém tem algum exemplo de como trazer do banco de dados as data (datetime) e marcar no Jcalendar?
Minha ideia é usar esse Jcalendar para visualização de reservas para aquele dia reservado pelo usuário.
Muito Obrigado!
Pessoal, Boa tarde! Alguém tem algum exemplo de como trazer do banco de dados as data (datetime) e marcar no Jcalendar?
Minha ideia é usar esse Jcalendar para visualização de reservas para aquele dia reservado pelo usuário.
Muito Obrigado!
Olá Elivelton,
Sua dúvida já tem alguns anos, mas resolvi esse problema recentemente, e acho legal compartilhar como por aqui. Vamos lá:
Na ultima versão do Jcalendar, existe um método que vai ajudar a gente nisso, ele se chama IDateEvaluator, e vamos precisar montar o seguinte código:
private static class efeitoObrigacao implements IDateEvaluator {
public final List<Date> list = new ArrayList<>();
public void add(Date date) {
list.add(date);
}
@Override
public boolean isSpecial(Date date) {
return list.contains(date);
}
@Override
public Color getSpecialForegroundColor() {
return Color.white;
}
@Override
public Color getSpecialBackroundColor() {
return Color.orange.darker();
}
@Override
public String getSpecialTooltip() {
return "Tarefa e Obrigação";
}
@Override
public boolean isInvalid(Date date) {
return false;
}
@Override
public Color getInvalidForegroundColor() {
return null;
}
@Override
public Color getInvalidBackroundColor() {
return null;
}
@Override
public String getInvalidTooltip() {
return null;
}
}
Agora vamos adicionar as datas com o seguinte código:
efeitoObrigacao evaluator = new efeitoObrigacao();
private void adicionarDataEspecial() {
//PARTE RESPONSAVEL PELA VERIFICAÇÃO DOS DIAS EM QUE VENCE UMA OBRIGAÇÃO
conexaoBD.executaSQL("SELECT A.AGENDA_OBRI_DATA_VENCIMENTO FROM TBL_AGENDAOBRIGACAO A WHERE (A.AGENDA_OBRI_STATUS = 1 OR A.AGENDA_OBRI_STATUS = 2)");
try {
while (conexaoBD.rs.next()) {
evaluator.add(conexaoBD.rs.getDate("A.AGENDA_OBRI_DATA_VENCIMENTO"));
}
conexaoBD.rs.close();
} catch (SQLException ex) {
Logger.getLogger(ViewTelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
}
}
Será necessário iniciar a ultima classe que criamos. Lembrando que não achei necessário criar uma classe para isso, mas fica a critério.
Por fim, vamos adicionar os próximos códigos no momento que iniciar o frame:
adicionarDataEspecial();
jCalendarTarefasObrigacoes.getDayChooser().addDateEvaluator(evaluator);
jCalendarTarefasObrigacoes.setCalendar(jCalendarTarefasObrigacoes.getCalendar());