日期 不得为 null [重复]

Date Must not be null [duplicate]

提问人:Pitergann 提问时间:7/11/2023 最后编辑:Hovercraft Full Of EelsPitergann 更新时间:7/11/2023 访问量:180

问:

我想在我的应用程序中使用 DateChooser。我已经在我的代码中安装并实现了所有内容,并且没有编译错误,但是当我尝试运行代码时,控制台显示一个错误,“日期不得为空”。我做错了什么?我必须先实现“基准”日期吗?

kalender = new JPanel();
kalender.setBackground(new Color(135, 206, 235));
kalender.setBounds(0, 0, 506, 250);
LayeredPane.add(kalender);
kalender.setLayout(null);
    
Termin = new Termin();
    
SimpleDateFormat sdl = new SimpleDateFormat("dd-MM-yyyy");
JDateChooser dateChooser = new JDateChooser();
dateChooser.setBounds(169, 119, 70, 20);
Termin.setDate(sdl.format(dateChooser.getDate())); // the erro must be here because with out this     
kalender.add(dateChooser);                          //line everything works
System.out.println(Termin);
    
JButton btnNext3 = new JButton("Next");
btnNext3.setBounds(215, 200, 70, 20);
kalender.add(btnNext3);
btnNext3.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            LayeredPane.moveToFront(kontakt);
            kalender.removeAll();
        }
        
    });

因此,我有一个单独的类“Termin”来定义约会的所有属性,并且我想将属性日期设置为用户在日期选择器中选择的任何属性。

我尝试通过硬编码来设置属性中的日期,但是当用户使用日期选择器进行选择时,它不会改变。

java swing nullpointerexception jdatechooser

评论


答:

2赞 marcinj 7/11/2023 #1

在这一行中:

Termin.setDate(sdl.format(dateChooser.getDate()));

dateChooser.getDate() 返回 null,因为尚未选择日期。您需要检测用户何时更改了日期。您应该使用以下 SO 中的代码:是否可以检测 JCalendar JDateChooser 字段上的日期更改?

它应该看起来像这样:

dateChooser.getDateEditor().addPropertyChangeListener(
    new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent e) {
           if ("date".equals(e.getPropertyName())) {
                java.util.Date date = (java.util.Date)e.getNewValue();
                Termin.setDate(sdl.format(date));
            }
        }
    }
);

评论

0赞 Pitergann 7/11/2023
好吧,谢谢你的帮助没有新