Как выделить конкретную дату в JCalendar (уже пробовал реализовать предыдущие ответы)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как выделить конкретную дату в JCalendar (уже пробовал реализовать предыдущие ответы)

Сообщение Anonymous »

У меня возникла проблема с выделением определенных дат в моем JCalendar с помощью IDateEvaluator. Я хочу, чтобы на основе дат, которые пользователь вставил в базу данных, IDateEvaluator выделял их в JCalendar. Я пытался исправить это, основываясь на всех ответах из предыдущих сообщений об этой проблеме, но мне либо так и не удалось выделить правильную дату, либо выделение просто не сработало.
Вот что у меня есть на данный момент:

Код: Выделить всё

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

}

}
Это странно, потому что метод getSpecialForegroundColor() работает должным образом, а дни в JCalendar отображаются пурпурным цветом. Но почему-то они не подсвечиваются. Я подумал, что, возможно, переопределение было неправильным, поэтому я использовал оператор печати в getSpecialBackroundColor(), и он печатает терминал, так что теперь я еще больше запутался. Может ли кто-нибудь помочь мне исправить мой код, чтобы функция getSpecialBackroundColor() работала? Пока это выглядит так:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-previo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»