1

これで動作するようになり、変数呼び出しエラーを修正しました。しかし、私は得る:

Exception in thread "main" java.lang.NullPointerException
    at Radio.buildPanel(Radio.java:56)
    at Radio.<init>(Radio.java:33)
    at Radio.main(Radio.java:74)

GUIがポップアップしますが、空白です。今は何ですか?現時点では何が問題なのかわかりません。

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 JLabel messageLabel;
    private JTextField text;
    private final int WINDOW_WIDTH = 550;
    private final int WINDOW_HEIGHT = 550;
    private ButtonGroup radioButtonGroup;
    private JRadioButton radioButton1;
    private JRadioButton radioButton2;
    double pTotal;
    double sTotal;

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

    }

    public void init()
    {
     setLayout(new BorderLayout());
     add(buttonPanel, BorderLayout.SOUTH);
    }
    private void buildPanel() 
    {
        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);
        buttonPanel.add(squareArea);
        buttonPanel.add(parallelogramArea);
        Panel.add(calcButton);
        Panel.add(buttonPanel);
    }




    public static void main (String[] args)
    {

        Radio radio = new Radio();
    }

    private class CalcButtonListener implements ActionListener
    {
        @Override
        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

このbuildPanel();メソッドを呼び出しています。

このメソッドは2つのパラメーターを引数として受け入れるため、これは誤りです。

したがって、このメソッドを次のように呼び出します`buildPanel(str1,str2);

private void buildPanel(String width1, String base1){
      .............
}

編集

宣言しないすべての変数を宣言します。

String base1 = null;
于 2013-03-24T17:28:14.167 に答える
1

Eclipseで、「ウィンドウ」 - 「ビューの表示」メニューに移動し、「問題」という名前のビューを開くことを選択します。このビューは常に開いている必要があります。すべてのコンパイルエラーと警告が含まれています。コンパイルエラー(赤でマーク)がありますが、プログラムを実行しようとしないでください。

未定義の変数を使用しようとしているようで、buildPanel(String, String)引数として2つの文字列を渡さずにメソッドを呼び出しているようです。問題ビューでコンパイルエラーをダブルクリックすると、Eclipseによって問題のある行にカーソルが置かれます。

プログラムをコンパイルしてそのような基本的なエラーを解決する方法を学ぶ前に、どうしてSwingを使用しているのですか?それは、運転を学ぶ前にフェラーリを運転しようとするようなものです。基本から始めましょう。

于 2013-03-24T17:28:56.823 に答える
1

スコープに問題があります。たとえば、メソッドのスコープparallelogramArea内で定義しbuildPanel()ていて、別のスコープ(内部クラスのスコープ)内からメソッドにアクセスしようとしているとしますCalcButtonListener

buildPanel()また、 2つのString引数なしで呼び出しています。

于 2013-03-24T17:29:23.460 に答える
1

最初のエラーは、呼び出すときにbuildPanel(String, String)2つの文字列パラメーターを使用して関数に渡す必要があることを意味します。現時点では、パラメータを渡していない。2番目のエラーは、使用しようとしている変数が未定義であることを意味します。これは、メソッド内で使用しようとしたときに変数が定義されていないことを意味するスコープの問題があるためです。

于 2013-03-24T17:29:30.423 に答える