java.lang.NullPointerException
I tried to debug but I cannot find which object is null ( I am using JGrasp)
here is the exception:
Code :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at RectangleProgram$CalculateButtonHandler.actionPerformed(RectangleProgram.java:61)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6504)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6269)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Here is my program:
Code :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RectangleProgram extends JFrame
{
private JLabel lengthLabel, widthLabel, areaLabel, perimeterLabel;
private JTextField lengthText, widthText, areaText, perimeterText;
private JButton calculateB, exitB;
private CalculateButtonHandler cbHandler;
private ExitButtonHandler ebHandler;
public RectangleProgram()
{
setTitle("Area and perimeter of a Rectangle");
setSize(500,300);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container pane = getContentPane();
pane.setLayout(new GridLayout(5, 2));
JTextField lengthText = new JTextField(10);
JTextField widthText = new JTextField(10);
JTextField areaText = new JTextField(10);
JTextField perimeterText = new JTextField(10);
calculateB = new JButton("Calculate");
exitB = new JButton("Exit");
ebHandler = new ExitButtonHandler();
cbHandler = new CalculateButtonHandler();
JLabel lengthLabel = new JLabel("Enter the length:", SwingConstants.RIGHT);
pane.add(lengthLabel);
pane.add(lengthText);
JLabel widthLabel = new JLabel("Enter the width:", SwingConstants.RIGHT);
pane.add(widthLabel);
pane.add(widthText);
JLabel areaLabel = new JLabel("Area:", SwingConstants.RIGHT);
pane.add(areaLabel);
pane.add(areaText);
JLabel perimeterLabel = new JLabel("Perimeter:", SwingConstants.RIGHT);
pane.add(perimeterLabel);
pane.add(perimeterText);
pane.add(calculateB);
pane.add(exitB);
exitB.addActionListener(ebHandler);
calculateB.addActionListener(cbHandler);
}
private class CalculateButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
double width, length, area, perimeter;
length = Double.parseDouble(lengthText.getText()); ***********This is the line the compiler highlights***********
width = Double.parseDouble(widthText.getText());
area = length * width;
perimeter = 2 * (width + length);
areaText.setText("" + area);
perimeterText.setText("" + perimeter);
}
}
private class ExitButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
public static void main(String[] args)
{
RectangleProgram rec = new RectangleProgram();
}
}
Re: java.lang.NullPointerException
Here, you're hiding the instance variables that you declared up top, meaning that your instance variables aren't being initialised.
To fix this, remove the JTextField declaration in front of your variable names.
Re: java.lang.NullPointerException
Thank you I feel so dumb.... I instantiated them first, then decided I wanted them private to that method. Dumb.... Thank you!!!!!!!!!!!!