You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为JDateChooser设置关联航班目的地的星期几选日期限制

JDateChooser 特定星期几日期限制实现方案

要实现JDateChooser仅允许选择指定星期几的日期,核心是通过JDateChooser依赖的DateEvaluator接口自定义日期校验逻辑,具体步骤如下:

1. 自定义日期校验器

创建实现DateEvaluator的类,重写isValid(Date date)方法,判断当前日期的星期是否在允许的列表中:

import com.toedter.calendar.DateEvaluator;
import com.toedter.calendar.JDateChooser;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

class WeekdayDateEvaluator implements DateEvaluator {
    private final Set<Integer> allowedWeekdays;

    public WeekdayDateEvaluator(Set<Integer> allowedWeekdays) {
        this.allowedWeekdays = allowedWeekdays;
    }

    @Override
    public boolean isValid(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 获取当前日期对应的星期(Calendar.DAY_OF_WEEK取值为1=周日,2=周一,...,7=周六)
        int weekday = cal.get(Calendar.DAY_OF_WEEK);
        return allowedWeekdays.contains(weekday);
    }

    @Override
    public String getInvalidTooltip() {
        return "仅可选择指定星期的日期";
    }

    // 以下方法按需实现默认值即可
    @Override
    public boolean isSpecial(Date date) { return false; }
    @Override
    public String getSpecialTooltip() { return null; }
    @Override
    public String getSpecialForegroundColor() { return null; }
    @Override
    public String getSpecialBackgroundColor() { return null; }
}

2. 绑定校验器到JDateChooser

以你提到的「选择巴黎时仅允许周一、周三」为例,在目的地选择的触发逻辑中(比如下拉框选择事件),创建校验器并绑定到JDateChooser:

// 假设已初始化JDateChooser实例jDateChooser
// 定义允许的星期几(周一=Calendar.MONDAY,周三=Calendar.WEDNESDAY)
Set<Integer> allowedDays = new HashSet<>();
allowedDays.add(Calendar.MONDAY);
allowedDays.add(Calendar.WEDNESDAY);

// 创建自定义校验器
WeekdayDateEvaluator parisEvaluator = new WeekdayDateEvaluator(allowedDays);

// 清空原有校验器(避免冲突)
jDateChooser.getJCalendar().removeAllDateEvaluators();
// 添加新的校验器
jDateChooser.getJCalendar().addDateEvaluator(parisEvaluator);

3. 多目的地切换逻辑

如果需要针对不同目的地设置不同的星期限制,只需在目的地选择组件的事件监听器中,重复上述创建校验器并替换的逻辑即可。

内容的提问来源于stack exchange,提问作者Bohdan Zachepa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:10:27