I am creating a GUI program with java and when I run it, I get this stack of errors.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ButtonPanel$AllocateListener.actionPerformed(ButtonPanel.java:52)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
This is the code in my ButtonPanel
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 JButton button = new JButton("Allocate Cell");
private LeftInputPanel leftInput = new LeftInputPanel(prison);
private DaysPanel daysPanel;
private MonthsPanel monthsPanel;
private YearsPanel yearsPanel;
private CrimePanel crimePanel;
private CountPanel countPanel;
//private AllocateListener listener = new AllocateListener();
public ButtonPanel(Prison prison)
{
this.prison = prison;
setup();
build();
}
public void setup()
{
}
public void build()
{
Dimension size = new Dimension(240, 70);
button.setPreferredSize(size);
button.setMinimumSize(size);
button.setMaximumSize(size);
button.addActionListener(new AllocateListener());
add(button);
update();
}
public void update()
{
leftInput.update();
}
private class AllocateListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Criminal criminal = new Criminal(leftInput.name());
Period period = new Period(daysPanel.days(), monthsPanel.months(), yearsPanel.years()); //ERROR IN THIS LINE
criminal.set(new Crime(crimePanel.getCrime()));
prison.add(criminal);
}
}
}
DaysPanel
import model.*;
import java.awt.*;
import java.text.*;
import javax.swing.*;
public class DaysPanel extends JPanel
{
JTextField field = new JTextField();
public DaysPanel()
{
setup();
build();
}
public void setup()
{
setLayout(new FlowLayout(FlowLayout.LEFT));
/*Dimension size = new Dimension(75, 20);
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);*/
}
public void build()
{
Dimension size = new Dimension(30, 20);
field.setPreferredSize(size);
field.setMinimumSize(size);
field.setMaximumSize(size);
add(field);
add(new JLabel(" days"));
}
public int days()
{
return Integer.parseInt(field.getText());
}
public void update()
{
field.setText("");
}
}
What's wrong with my code?