为什么我在使用数组“messwerte”时会在 JFrame 中收到 NullPointerException

问题描述 投票:0回答:1
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Messreihe extends JFrame {

    private JPanel contentPane;
    private JTextField tfAnzahlMesswerte;
    private JTextField tfMesswert;
    private JTextField tfMesswertBearbeiten;
    private JTextField tfNeuerWert;
    private JLabel lblMesswert;
    private JButton btnMesswert;
    private int n;
    private int anzahl;
    double[] messwerte;
    

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
        try {
            Messreihe frame = new Messreihe();
            frame.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
        }
    });
    }

    public Messreihe() {
        setTitle("Messreihe");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 357);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

    setContentPane(contentPane);
    contentPane.setLayout(null);
    
    JLabel lblAnzahlMesswerte = new JLabel("Wieviele Messwerte sollen eingegeben werden?");
    lblAnzahlMesswerte.setBounds(10, 11, 282, 14);
    contentPane.add(lblAnzahlMesswerte);
    
    tfAnzahlMesswerte = new JTextField(); // textfield to input number of measured values
    tfAnzahlMesswerte.setBounds(302, 8, 54, 20);
    contentPane.add(tfAnzahlMesswerte);
    tfAnzahlMesswerte.setColumns(10);
    
    JButton btnAnzahlMesswerte = new JButton("OK"); //count of my measured values
    btnAnzahlMesswerte.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            anzahl = Integer.parseInt(tfAnzahlMesswerte.getText());
            lblAnzahlMesswerte.setVisible(false);
            btnAnzahlMesswerte.setVisible(false);
            tfAnzahlMesswerte.setVisible(false);
            messwerte = new double[anzahl];
            n++;
            lblMesswert.setVisible(true);
                    lblMesswert.setText(n + ". Messwert:");
            btnMesswert.setVisible(true);
            tfMesswert.setVisible(true);
                        
        }
    });
    btnAnzahlMesswerte.setBounds(366, 7, 62, 23);
    contentPane.add(btnAnzahlMesswerte);
    
    JLabel lblMesswert = new JLabel("Messwert:");
    lblMesswert.setVisible(false);
    lblMesswert.setBounds(10, 36, 75, 14);
    contentPane.add(lblMesswert);
    
    tfMesswert = new JTextField();
    tfMesswert.setVisible(false);
    tfMesswert.setBounds(10, 53, 96, 20);
    contentPane.add(tfMesswert);
    tfMesswert.setColumns(10);
    
    JButton btnMesswert = new JButton("OK");
    btnMesswert.setVisible(false);
    btnMesswert.setBounds(116, 52, 62, 23);
    contentPane.add(btnMesswert);
    

    JLabel lblMittelwert = new JLabel("Mittelwert"); //average
    lblMittelwert.setBounds(10, 294, 96, 14);
    contentPane.add(lblMittelwert);
    }
}

我想创建一个数组来保存测量值并计算它们的平均值。 在“Anzahl Messwerte”按钮中,我尝试定义数组的长度,但每次使用该按钮时,我都会收到 NullPointerExeption。

我是java新手,想问如何纠正我的代码。 任何指导或建议将不胜感激!

java arrays jframe
1个回答
0
投票

问题是,您将组件声明为字段和局部变量。您应该引用它们,而不是在本地创建。 像这样:

lblMesswert = new JLabel("Messwert:");

而不是:

JLabel lblMesswert = new JLabel("Messwert:");
© www.soinside.com 2019 - 2024. All rights reserved.