我想使用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 "";
}}
答案 0 :(得分:0)
我遇到了同样的问题,我无法修复它。但我尝试使用JCalendar库http://toedter.com/jcalendar/,现在它正在使用方法setMaxSelectableDate。
这是我的代码:
JDateChooser chooser = new JDateChooser();
chooser.setMaxSelectableDate(new Date());
chooser.setDateFormatString("dd-MM-yyyy");
chooser.setDate(new Date());
答案 1 :(得分:0)
我知道这有点晚了,但是我决定将其发布,以防有人需要。
我如何使用DateLabelFormatter类将日期选择器的最大日期限制为今天。
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 "";
}}
这不是一个很好的解决方案,因为在日期选择器的今天之后的任何日期都没有未禁用。此解决方案仅检查选定的日期,如果选定的日期晚于指定的日期(今天),它将返回今天的日期的值。