[英]Null pointer exception error
当我运行程序时,出现此错误nullPointerException:null。
import model.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
public class ButtonPanel extends JPanel implements View
{
private Prison prison;
private LeftInputPanel leftInput;
private DaysPanel days;
private MonthsPanel months;
private YearsPanel years;
private CrimePanel crime;
private AllocateListener aListener;
public ButtonPanel()
{
setup();
build();
}
public void setup()
{
}
public void build()
{
JButton button = new JButton("Allocate Cell");
Dimension size = new Dimension(240, 70);
button.setPreferredSize(size);
button.setMinimumSize(size);
button.setMaximumSize(size);
button.addActionListener(aListener);
add(button);
update();
}
public void update()
{
leftInput.update(); //ERROR ON THIS LINE
}
private class AllocateListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Criminal criminal = new Criminal(leftInput.name());
Period period = new Period(days.days(), months.months(), years.years());
criminal.set(new Crime(crime.getCrime()));
prison.add(criminal);
}
}
}
我的LeftInputPanel-从那里调用update方法。
import model.*;
import java.awt.*;
import java.text.*;
import javax.swing.*;
public class LeftInputPanel extends JPanel
{
public JTextField field = new JTextField();
public LeftInputPanel()
{
setup();
build();
}
public void setup()
{
//setLayout(new GridLayout());
Dimension size = new Dimension(100, 190);
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
}
public void build()
{
setLayout(new FlowLayout(FlowLayout.LEFT));
JLabel label = new JLabel(" Name");
field.setPreferredSize(new Dimension(90, 20));
add(label);
add(field);
add(new DaysPanel());
add(new MonthsPanel());
add(new YearsPanel());
}
public String name()
{
return field.getText();
}
public void update()
{
field.setText("");
}
}
失误
java.lang.NullPointerException
at ButtonPanel.update(ButtonPanel.java:43)
at ButtonPanel.build(ButtonPanel.java:38)
at ButtonPanel.<init>(ButtonPanel.java:21)
at RightInputPanel.build(RightInputPanel.java:30)
at RightInputPanel.<init>(RightInputPanel.java:14)
at InputPanel.build(InputPanel.java:24)
at InputPanel.<init>(InputPanel.java:13)
at Panel.build(Panel.java:30)
at Panel.<init>(Panel.java:13)
at Window.build(Window.java:31)
at Window.<init>(Window.java:11)
at Root.main(Root.java:9)
aListener
尚未初始化(即,它仍然为null
),并且您试图将其添加为动作侦听器。 我怀疑所需要的是:
private AllocateListener aListener = new AllocateListener();
当您遇到异常时,通常会得到堆栈跟踪,包括完整的调用顺序-这对于跟踪问题非常有用。
如果您无法从该堆栈跟踪中找出问题,则需要将其与相关代码以及行号一起提供给我们。
然后,我们将能够更好地帮助您解决问题, 更重要的是 ,向您展示问题的解决方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.