Как выделить даты внутри JCalendar в JDateChooser? - PullRequest
0 голосов
/ 28 сентября 2018

Я использую компонент JDateChooser из внешней библиотеки toedter (jcalendar1.4).Я использовал собственный DateEvaluator, реализовав IDateEvaluator, который позже добавляется в компонент JDateChooser:

public static class HighlightEvaluator implements IDateEvaluator {
    private final List<Date> list = new ArrayList<>();
    public void add(Date date) {
        list.add(date);
    }

    public void remove(Date date) {
        list.remove(date);
    }

    public void setDates(List<Date> dates) {
        list.addAll(dates);
    }

    @Override
    public Color getInvalidBackroundColor() {
        return Color.BLACK;
    }

    @Override
    public Color getInvalidForegroundColor() {
        return null;
    }

    @Override
    public String getInvalidTooltip() {
        return null;
    }

    @Override
    public Color getSpecialBackroundColor() {
        return Color.GREEN;
    }

    @Override
    public Color getSpecialForegroundColor() {
        return Color.RED;
    }

    @Override
    public String getSpecialTooltip() {
        return "filled";
    }

    @Override
    public boolean isInvalid(Date date) {
        return false;
    }

    @Override
    public boolean isSpecial(Date date) {
        return list.contains(date);
    }
}

и вот мой основной метод:

public static void main(){
JDateChooser dateChooser = new JDateChooser();    
List<Date> dates = new ArrayList<Date>();
dates.add(new Date());
HighlightEvaluator evaluator = new HighlightEvaluator();
evaluator.setDates(dates);
dateChooser.getJCalendar().getDayChooser().addDateEvaluator(evaluator);
}

Теперь предполагается, что текущая дата будет выделена кодом, но она не будет выделена.Пожалуйста, сообщите об этом

1 Ответ

0 голосов
/ 28 сентября 2018

Вам нужно немного изменить переменную Date.Когда вы создаете переменную Date, она захватывает текущий день, месяц, год и время (часы, минуты, секунды, миллисекунды)

Однако установка той же даты для оценщика не будет работать, поскольку оценщик ожидает, что дата не будет содержатьдетали времени.Таким образом, в качестве альтернативы вы можете использовать объект Calendar в своей основной функции, как показано ниже:

public static void main(){
JDateChooser dateChooser = new JDateChooser();    
List<Date> dates = new ArrayList<Date>();
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, desiredyear);
c.set(Calendar.MONTH, desiredmonth);
c.set(Calendar.DAY_OF_MONTH, desiredday);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
dates.add(c.getTime());
HighlightEvaluator evaluator = new HighlightEvaluator();
evaluator.setDates(dates);    
dateChooser.getJCalendar().getDayChooser().addDateEvaluator(evaluator);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...