Вот что у меня есть на данный момент:
Код: Выделить всё
public class JCalendar4 {
SQLConnection con = new SQLConnection(); // connection to database
private static class Evaluator implements IDateEvaluator {
private List assignmentDates = new ArrayList();
public void add(Date dates) {
assignmentDates.add(dates);
}
public void remove(Date date) {
assignmentDates.remove(date);
}
public void setDates(List dates) {
assignmentDates.addAll(dates);
}
@Override
public boolean isSpecial(Date date) {
return assignmentDates.contains(date);
}
@Override
public Color getSpecialForegroundColor() {
return Color.MAGENTA;
}
@Override
public String getSpecialTooltip() {
return "Highlighted Event";
}
@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;
}
@Override
public Color getSpecialBackroundColor() {
return Color.MAGENTA; //System.out.println(color);
}
}
private void display() {
List datesList = new ArrayList();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
// example of the date I stored in my database
try {
datesList.add(dateFormat.parse("2019-09-26"));
datesList.add(dateFormat.parse("2020-05-24"));
} catch (Exception ex) {
ex.getMessage();
}
JDateChooser dateChooser = new JDateChooser();
List dates = new ArrayList();
Calendar c = Calendar.getInstance();
JFrame f = new JFrame("Calendar");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JCalendar jc = new JCalendar();
for(int i = 0; i < datesList.size(); i++) {
dates.add(createDate(datesList.get(i)));
}
Evaluator evaluator = new Evaluator();
evaluator.setDates(dates);
jc.getDayChooser().addDateEvaluator(evaluator);
jc.setCalendar(jc.getCalendar());
f.add(jc);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
jc.repaint();
}
private Date createDate(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return (c.getTime());
}
public static void main(String[] args) {
EventQueue.invokeLater(new JCalendar4()::display);
}
}

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-previo
Мобильная версия