0

您好,我已经创建了一个包含多个按钮的应用程序。但是当我按下一个按钮时,我得到了 NullPointerException。这里奇怪的是没有什么是空的( null )

这是一个代码示例

public class MuseumPanel extends JPanel implements ActionListener {

private JTextField kaartnummer;
private JTextField uur, minuut;
private JButton aankomst, vertrek, overzicht, sluiting;

private int hour;
private int minute;
private final int REFRESH = 1000;

MuseumRegistratie museum;

public MuseumPanel(MuseumRegistratie museum) {
    // zorg ervoor dat de huidige tijd wordt opgehaald.
    javax.swing.Timer timer = new javax.swing.Timer(REFRESH, this);
    timer.start();

    kaartnummer = new JTextField(15);
    uur = new JTextField(2);
    minuut = new JTextField(2);
    aankomst = new JButton("Komt binnen");
    aankomst.addActionListener(this);
    vertrek = new JButton("Vertrekt");
    vertrek.addActionListener(this);
    overzicht = new JButton("aantal aanwezig");
    overzicht.addActionListener(this);
    sluiting = new JButton("sluiting");
    sluiting.addActionListener(this);

    add(new JLabel("Kaartnummer"));
    add(kaartnummer);
    add(new JLabel("tijdstip van aankomst of vertrek "));
    add(uur);
    add(new JLabel(" uur en "));
    add(minuut);
    add(new JLabel(" minuten"));
    add(aankomst);
    add(vertrek);
    add(overzicht);
    add(sluiting);
}

@Override
public void actionPerformed(ActionEvent e) {
    Calendar now = Calendar.getInstance();
    hour = now.get(Calendar.HOUR_OF_DAY);
    minute = now.get(Calendar.MINUTE);

    uur.setText("" + hour);
    minuut.setText("" + minute);

    // aankomst
    if(e.getSource() == aankomst) {
        try {

            museum.checkIn(kaartnummer.getText(), hour, minute);
        } catch (NullPointerException ex) {

            System.out.println("cardnumber: " + kaartnummer.getText() + " hour " + hour + " minute " + minute);
        }
    }
    // vertrek
    if(e.getSource() == vertrek) {
        museum.checkOut(kaartnummer.getText(), hour, minute);
    }
    // overzicht
    if(e.getSource() == overzicht) {
        museum.getAantalAanwezig();
    }
    // sluiting
    if(e.getSource() == sluiting) {
        museum.sluitRegistratie();
    }
}
}

例如,当按下此按钮时,我正确地得到了每个变量的异常。有谁知道这是如何出现的以及如何解决它?

4

2 回答 2

3

如果没有更多信息,我会假设博物馆对象为 null,这会在您尝试调用 museum.checkIn 时触发 nullpointerexception。

看代码博物馆绝对是空的。在构造函数中,您应该包括:

this.museum = museum;

假设您传入的博物馆对象不为空,那么其他一切都应该工作。

于 2012-12-10T22:24:56.563 回答
2

你似乎没有museum在你的构造函数中赋值,但是你在很多地方取消引用它。你想这样做:

this.museum = museum;

在你的构造函数的某个地方。或者,重命名变量,以免您不小心这样做museum = museum,这将没有效果。

于 2012-12-10T22:34:47.633 回答