我正在尝试用日期选择器字段替换JTextField,我遵循了能够找到的安装说明以及SO上的其他示例。另外,我有最新版本(V1.3.4) - https://sourceforge.net/projects/jdatepicker/
//...
import org.jdatepicker.impl.JDatePanelImpl;
import org.jdatepicker.impl.JDatePickerImpl;
import org.jdatepicker.impl.UtilDateModel;
public class NewTransactionDialog extends JDialog {
private JPanel panel = new JPanel(new GridLayout(0, 1));
//...
public NewTransactionDialog() {
//...
// date
panel.add(new JLabel("Date:"));
// panel.add(new JTextField()); // old text field i want to replace
UtilDateModel model = new UtilDateModel();
JDatePanelImpl datePanel = new JDatePanelImpl(model, null);
JDatePickerImpl datePicker = new JDatePickerImpl(datePanel, null);
panel.add(datePicker);
//...
getContentPane().add(panel);
pack();
}
}
抱歉,这只是一些愚蠢的错误,但我看不到我这次做错了什么。我确实必须添加第二个NULL参数,因为Eclipse告诉我构造函数不匹配。这似乎与我说的每个示例都不同,后者仅将一个参数传递给构造函数(JDatePanelImpl,JDatePickerImpl)-这些参数应该以非NULL的形式传递吗?
在Eclipse控制台中引发的错误是:7
Exception in thread "main" java.lang.NullPointerException
at org.jdatepicker.impl.JDatePanelImpl$InternalView.getPreviousMonthButton(JDatePanelImpl.java:517)
at org.jdatepicker.impl.JDatePanelImpl$InternalView.getPreviousButtonPanel(JDatePanelImpl.java:442)
at org.jdatepicker.impl.JDatePanelImpl$InternalView.getNorthPanel(JDatePanelImpl.java:251)
at org.jdatepicker.impl.JDatePanelImpl$InternalView.initialise(JDatePanelImpl.java:234)
at org.jdatepicker.impl.JDatePanelImpl$InternalView.<init>(JDatePanelImpl.java:222)
at org.jdatepicker.impl.JDatePanelImpl.<init>(JDatePanelImpl.java:110)
at biz.martyn.budget.NewTransactionDialog.<init>(NewTransactionDialog.java:54)
at biz.martyn.budget.TransactionsToolbar.<init>(TransactionsToolbar.java:34)
at biz.martyn.budget.Budget.main(Budget.java:39)
at org.jdatepicker.impl.JDatePanelImpl$InternalView.getPreviousMonthButton(JDatePanelImpl.java:517)
那就是他失败的地方。有一个方法调用this.i18nStrings.getProperty("text.month")
但要初始化JDatePanelImpl
与null
该字段:
panel.add(new JLabel("Date:"));
UtilDateModel model = new UtilDateModel();
JDatePanelImpl datePanel = new JDatePanelImpl(model, null); // <<<<
JDatePickerImpl datePicker = new JDatePickerImpl(datePanel, null);
panel.add(datePicker, BorderLayout.CENTER);
那就是典型的NullPointerException原因
CTOR签名说:public JDatePanelImpl(DateModel<?> model, Properties i18nStrings)
所以它等待一个Properties
对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句