I tried to debug but I cannot find which object is null ( I am using JGrasp)
here is the exception:
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:
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(); } }