【发布时间】:2018-01-22 12:58:35
【问题描述】:
我尝试了不同的方法,但仍然无法获得由我创建的方法返回的 Java util.Date 实例以显示在我的 JDatePicker's JFormattedText 上
我打印了我得到的util.Date 的值,即2018-01-01
让我们调用变量dateStart 来保存值2018-01-01
当我尝试这样做时
jDatePickerImpl.getJFormattedTextField().setText(dateStart+"");
它会在JFormattedTextField 上显示 2018-01-01,这没关系。
但问题是,当我点击JDatePickerImpl 组件时,我得到一个exception 错误
AWT-EventQueue-0" java.lang.ClassCastException: java.util.Date cannot be cast to java.util.Calendar
at utility.date.DateLabelFormatter.valueToString(DateLabelFormatter.java:26)
所以我想也许我可以使用 JDatePanelImpl 实例的 setDate(int,int,int) 方法。
jDatePanelImpl.getModel().setDate(getYear(utilDate),getMonth(utilDate),getDay(utilDate));
private int getYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
return year;
}
private int getMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH);
return month;
}
private int getDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_MONTH);
return day;
}
但是当我这样做时,我只会得到一个空白或空的JFormattedTextField
我能够以字符串格式显示日期,但这并不能解决问题,因为只要单击JDatePicker 组件,就会出现异常错误。
这是我第一次尝试使用JDatePicker 库,我只是不知道下一步该做什么。
顺便说一句,我试图在JFormattedTextField 上设置的util.Date 对象是来自数据库Resultset 的日期,但我已将其转换为util.Date 格式,这就是我能够做到的原因打印出它的价值。
谢谢。
【问题讨论】:
-
有什么理由在您的代码中使用早已过时的
Date和Calendarclasses?java.time, the modern Java date and time API, 使用起来更好。我建议您从数据库中获取日期为LocalDate。如果您需要将Date或Calendar传递给日期选择器库,请仅在执行此操作之前进行转换。 -
@OleV.V.谢谢你。我还没有检查那些用于处理日期的 Java 8 API。这是我第一次创建具有许多日期输入和输出的项目,这导致我使用 JDatePicker1.3.4。以前没试过。
标签: java swing date datepicker