繁体   English   中英

如何在 JDateChooser 中突出显示 JCalendar 中的日期?

[英]How to highlight dates inside JCalendar in JDateChooser?

我正在使用来自外部库 toedter(jcalendar1.4) 的 JDateChooser 组件。 我通过实现 IDateEvaluator 使用了一个自定义 DateEvaluator,它后来被添加到 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);
}

现在应该由代码突出显示当前日期,但没有突出显示。 请告诉一个修复这个

您需要稍微更改 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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM