java - JDatePicker 的 NullPointerException

标签 java nullpointerexception

我正在尝试用日期选择器字段替换 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") 有一个方法调用

但是你正在初始化JDatePanelImplnull对于该字段:

  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目的。

关于java - JDatePicker 的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39669292/

相关文章:

java - Spring 启动验证不起作用

使用访问 token 时 Java facebook api oAuthException

java - 为什么 `exception` 在任何地方都看不到?

Java - 将记录传递到数据库时出现空指针异常

java - 面临改造 api 的问题。错误 : java. lang.NullPointerException:尝试在空对象引用上调用接口(interface)方法

Android-如何在intentservice里面实现TCP-ip client

java - 使用 session 进行多级登录用户和管理员?

java - 构造对象时对对象的最终引用

java - LiveData 最初不显示数据

java - 什么是NullPointerException,我该如何解决?