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新手,想问如何纠正我的代码。 任何指导或建议将不胜感激!
问题是,您将组件声明为字段和局部变量。您应该引用它们,而不是在本地创建。 像这样:
lblMesswert = new JLabel("Messwert:");
而不是:
JLabel lblMesswert = new JLabel("Messwert:");