在java swing jdatepicker中将最大日期值设置为今天

在java swing jdatepicker中将最大日期值设置为今天,java,Java,我想使用jdatepicker输入生日。 在jdatepicker中是否有任何方法、属性或任何其他方式将最长日期设置为今天 请参阅以下jdatepicker 1.3.4的代码 UtilDateModel model = new UtilDateModel(); Properties p = new Properties(); p.put("text.today", "Today"); p.put("text.month", "Month"); p.put("tex

我想使用jdatepicker输入生日。 在jdatepicker中是否有任何方法、属性或任何其他方式将最长日期设置为今天

请参阅以下jdatepicker 1.3.4的代码

UtilDateModel model = new UtilDateModel();
    Properties p = new Properties();
    p.put("text.today", "Today");
    p.put("text.month", "Month");
    p.put("text.year", "Year");
    JDatePanelImpl datePanel = new JDatePanelImpl(model, p);
    JDatePickerImpl datePicker = new JDatePickerImpl(datePanel,
            new DateLabelFormatter());
我已经实现了DateLabelFormatter类用于日期格式化。 虽然我会提供

public class DateLabelFormatter extends AbstractFormatter {

private SimpleDateFormat dateFormatter = new SimpleDateFormat(Constants.DATE_FORMAT_DDMMMYYYY);

public Object stringToValue(String text) throws ParseException {
    return dateFormatter.parseObject(text);
}

public String valueToString(Object value) throws ParseException {
    if (value != null) {
        Calendar cal = (Calendar) value;
        return dateFormatter.format(cal.getTime());
    }

    return "";
}}

我也有同样的问题,我无法解决它。但我尝试使用JCalendar库,现在它使用setMaxSelectableDate方法工作

这是我的代码:

JDateChooser chooser = new JDateChooser();
chooser.setMaxSelectableDate(new Date());
chooser.setDateFormatString("dd-MM-yyyy");
chooser.setDate(new Date());

我知道这有点晚了,但我决定把它贴出来,以防有人需要

我是如何使用DateLabelFormatter类将datepicker上的最大日期限制为今天的

class DateLabelFormatter extends AbstractFormatter {

private String datePattern = "yyyy-MM-dd";
private SimpleDateFormat dateFormatter = new SimpleDateFormat(datePattern);

@Override
public Object stringToValue(String text) throws ParseException {
    return dateFormatter.parseObject(text);
}

@Override
public String valueToString(Object value) throws ParseException {
    if (value != null) {
        Calendar cal = (Calendar) value;
        Calendar today = Calendar.getInstance();

        if (cal.getTime().after(today.getTime())) return dateFormatter.format(today.getTime());

        return dateFormatter.format(cal.getTime());
    }

    return "";
}}
这不是一个很好的解决方案,因为它没有在日期选择器上禁用今天之后的任何日期。此解决方案仅检查所选日期,如果所选日期在指定日期(即今天)之后,它将返回今天日期的值