我有一些问题,我只是在jCalendar中从jDateChooser获取空值。
此方法是将java.util.Date转换为XMlGregorianCalendar的函数:
DatatypeFactory df;
public XMLGregorianCalendar function_ConvertAsXMLGregorianCalendar(Date date) {
if (date == null) {
System.out.println("Error on Function Convert Date into XML Gregorian Calendar");
return null;
} else {
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
return df.newXMLGregorianCalendar(gc);
}
}
这是getStart和getEnd Dates的2个函数。
private XMLGregorianCalendar getStartDate(){
Date dateStarting = jDateChooserStart.getDate();
System.out.println("Date Start : " + dateStarting.toString());
XMLGregorianCalendar cal = function_ConvertAsXMLGregorianCalendar(dateStarting);
System.out.println("Converted Date : " + cal.toXMLFormat());
return cal;
}
private XMLGregorianCalendar getEndDate(){
Date dateEnding = jDateChooserEnd.getDate();
System.out.println("Date End : " + dateEnding);
return function_ConvertAsXMLGregorianCalendar(dateEnding);
}
然后我将该方法放在一个名为schedule的对象中:
schedule.setStartDate(getStartDate());
schedule.setEndDate(getEndDate());
Netbeans的结果(v7.1)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Frames.CreateSchedule.function_ConvertAsXMLGregorianCalendar(CreateSchedule.java:181)
at Frames.CreateSchedule.getStartDate(CreateSchedule.java:188)
at Frames.CreateSchedule.SubmitButtonActionPerformed(CreateSchedule.java:204)
at Frames.CreateSchedule.access$000(CreateSchedule.java:16)
出了什么问题?
先谢谢。
更新::
我只是将功能更改为:
public XMLGregorianCalendar function_ConvertAsXMLGregorianCalendar(Date date) {
if (date == null) {
System.out.println("Error on Function Convert Date into XML Gregorian Calendar");
return null;
} else {
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
DatatypeFactory df = null;
return df.newXMLGregorianCalendar(gc);
}
}
更新2#::
初始化newInstance()方法后,我收到另一个错误:
java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
我只是从
更改包名称java.util.Date into java.SQL.Date
然后施放:
Date dateStarting = (Date) jDateChooserStart.getDate();
Date dateEnding = (Date) jDateChooserEnd.getDate();
如何解决此问题?
再次感谢。答案 0 :(得分:1)
虽然代码中没有正确的行号但不明显,NullPointerException
的最可能原因是行:
return df.newXMLGregorianCalendar(gc);
,df
为空。你在哪里初始化这个领域?
答案 1 :(得分:1)
似乎df
已声明但未实例化:
DatatypeFactory df;
从这里开始:
df.newXMLGregorianCalendar(gc);
^
您可以先使用DatatypeFactory.newInstance()进行实例化,如下所示:
DatatypeFactory df = DatatypeFactory.newInstance();
答案 2 :(得分:0)
我并不完全理解你的问题,但在我看来这是一个简单的修复调用你的日历就像这应该工作(我认为)。
Calendar timeStamp = new GregorianCalendar();