0

計算ボタンをクリックすると、次のようになることを修正しました。

これは現在、計算ボタンを除いてすべて機能しており、それが最も重要な部分です。ご協力いただきありがとうございます。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Radio$CalcButtonListener.actionPerformed(Radio.java:76)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)






import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;




    public class Radio extends JFrame 
    {

        private JPanel Panel;
        private JPanel buttonPanel;
        private JTextField base;
        private JTextField width;
        private JRadioButton squareArea;
        private JRadioButton parallelogramArea;
        private final int WINDOW_WIDTH = 550;
        private final int WINDOW_HEIGHT = 550;
        double pTotal;
        double sTotal;

        public Radio()
        {
            setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
            setTitle("Area Calculator");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
            buildPanel();
            add(Panel);

        }


        private void buildPanel() 
        {    
            Panel = new JPanel();
            JLabel messageLabel1 = new JLabel("Please enter the base: ");
            JTextField base = new JTextField(10);
            JLabel messageLabel2 = new JLabel("Please enter the width: ");
            JTextField width = new JTextField(10);
            JRadioButton squareArea = new JRadioButton("Choice 1", true);
            JRadioButton parallelogramArea = new JRadioButton("Choice 2");
            ButtonGroup group = new ButtonGroup();
            JButton calcButton = new JButton("Calculate");
            calcButton.setBackground(Color.BLUE);
            calcButton.setForeground(Color.PINK);
            calcButton.addActionListener(new CalcButtonListener());
            Panel.add(messageLabel1);
            Panel.add(base);
            Panel.add(messageLabel2);
            Panel.add(width);
            group.add(squareArea);
            group.add(parallelogramArea);
            Panel.add(squareArea);
            Panel.add(parallelogramArea);
            Panel.add(calcButton);
        }




        public static void main (String[] args)
        {

            Radio radio = new Radio();
            radio.buildPanel();
        }

        private class CalcButtonListener implements ActionListener
        {

            public void actionPerformed(ActionEvent e) 
            {


                if (parallelogramArea.isSelected());
                {
                    pTotal = Double.parseDouble(base.getText()) * Double.parseDouble(width.getText());
                    JOptionPane.showMessageDialog(null, "The Area is: " + pTotal);
                }


                if (squareArea.isSelected())
                {

                     sTotal = Double.parseDouble(base.getText()) * Double.parseDouble(width.getText());
                     JOptionPane.showMessageDialog(null, "The Area is: " + sTotal);
                }
            }
        }
    }
4

4 に答える 4

1

buttonPanelあなたはヌルだと思います。ただし、コード行をデバッグして、どれが null であるかを特定することができます。

于 2013-03-24T18:58:08.763 に答える
1

Panelあなたはどこにもインスタンス化しません。でbuildPanel追加できます:

panel = new JPanel();

またbuttonPanel、初期化されていません:

buttonPanel = new JPanel();

次に、パネルを に追加する必要がありますJFrame

add(panel);

Java 命名規則では、変数名が小文字で始まることを示していることに注意してくださいPanel panel

于 2013-03-24T18:58:12.813 に答える
0

Panel と buttonPanel をインスタンス化する必要があります。コンストラクタでそれを行うことができます。

    public Radio(){

        Panel = new JPanel();
        buttonPanel = new JPanel();
        setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
        setTitle("Area Calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        buildPanel();
        add(Panel);
        setVisible(true);

    }

ところで、可視性を true に設定する前に、buildPanel() を呼び出してパネルを追加します。

于 2013-03-24T19:04:26.253 に答える
0

パネルのオブジェクトを作成していません。

JPanel panel = new JPanel();
于 2013-03-24T18:58:27.110 に答える