Ошибка исключения нулевого указателя - PullRequest
0 голосов
/ 24 октября 2009

Когда я запускаю свою программу, я получаю эту ошибку 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);
}
}
}

My LeftInputPanel - откуда я вызываю метод обновления.

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)

Ответы [ 2 ]

4 голосов
/ 24 октября 2009

aListener не был инициализирован (то есть все еще null), и вы пытаетесь добавить его в качестве прослушивателя действий. Я подозреваю, что все, что требуется, это:

private AllocateListener aListener = new AllocateListener();
2 голосов
/ 24 октября 2009

Когда вы получаете исключение, вы, как правило, получаете трассировку стека, включая полную последовательность вызовов - это неоценимая помощь в отслеживании проблемы.

Если вы не можете выяснить проблему по этой трассировке стека, вам необходимо предоставить ее нам вместе с соответствующим кодом с номерами строк.

Тогда мы сможем помочь вам найти проблему и, , что более важно , показать вам, как это делается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...