Ich bekomme immer eine NullPointerException Fehlermeldung. Ich weiß, was die Fehlermeldung bedeutet, aber ich finde den Fehler nicht. Hier mein Quelltext:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.Vector;
class GUIstudent extends JFrame{
JLabel label1 = new JLabel("Name");
JLabel label2 = new JLabel("Geb.Dat.");
JLabel label3 = new JLabel("Matr.Nr,");
JTextField text1 = new JTextField(20);
JTextField text2 = new JTextField(20);
JTextField text3 = new JTextField(20);
JButton button1 = new JButton("Speichern");
JButton button2 = new JButton("Auswahl löschen");
JButton button3 = new JButton("Vor Auswahl einfügen");
JButton button4 = new JButton("Attribute ändern");
JButton button5 = new JButton("OK");
JButton button6 = new JButton("ändern abbrechen");
JButton button7 = new JButton("Programm beenden");
DefaultTableModel tableModel = new DefaultTableModel();
JTable table = new JTable(tableModel);
Vector students = null;
public static void main(String[] args){
GUIstudent gui = new GUIstudent();
gui.setVisible(true);
}
GUIstudent(){
super("TableTest");
setSize(300,350);
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
private void jbInit() throws Exception {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3,1));
panel.add(label1);
panel.add(text1);
panel.add(label2);
panel.add(text2);
panel.add(label3);
panel.add(text3);
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(7,1));
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel1.add(button4);
panel1.add(button5);
panel1.add(button6);
panel1.add(button7);
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout());
JScrollPane scrollpane = new JScrollPane(table);
getContentPane().add(scrollpane);
tableModel.addColumn("Eintrag");
tableModel.addColumn("Name");
tableModel.addColumn("Geburtsjahr");
tableModel.addColumn("MatrNr");
panel2.add(table);
//panel2.add(scrollpane);
setLayout(new BorderLayout());
add(panel, BorderLayout.NORTH);
add(panel1, BorderLayout.CENTER);
add(panel2, BorderLayout.SOUTH);
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent event ) {
// Ressourcen freigeben
dispose();
// Programm beenden
System.exit( 0 );
}
});
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
button1_actionPerformed(e);
}
});
//Action-Listener für button7 (Programm beenden)
button7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
button7_actionPerformed(e);
}
});
}
private void button1_actionPerformed(ActionEvent e) {
save();
}
//Action-Event für button7 (Programm beenden)
private void button7_actionPerformed(ActionEvent e) {
System.exit(0);
}
private void save(){
Student newStudent = new Student();
newStudent.setData(text1.getText(),text2.getText(),text3.getText());
students.addElement( newStudent );
tableModel.addRow(new Object[]{String.valueOf(table.getRowCount()+1), text1.getText(),text2.getText(), text3.getText()});
}
}
Der Fehler tritt bei der save() auf und zwar in der Zeile students.addElement( newStudent ).
Hier der Quelltext der Student.java:
import java.io.*;
class Student implements Serializable
{
private String name;
private String geburtsjahr;
private String matrnr;
Student(){}
public void setData(String name, String geburtsjahr, String matrnr){
this.name = name;
this.geburtsjahr = geburtsjahr;
this.matrnr = matrnr;
}
public String getName(){ return name;}
public String getGeburtsjahr(){ return geburtsjahr;}
public String getMatrnr(){ return matrnr;}
}
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.Vector;
class GUIstudent extends JFrame{
JLabel label1 = new JLabel("Name");
JLabel label2 = new JLabel("Geb.Dat.");
JLabel label3 = new JLabel("Matr.Nr,");
JTextField text1 = new JTextField(20);
JTextField text2 = new JTextField(20);
JTextField text3 = new JTextField(20);
JButton button1 = new JButton("Speichern");
JButton button2 = new JButton("Auswahl löschen");
JButton button3 = new JButton("Vor Auswahl einfügen");
JButton button4 = new JButton("Attribute ändern");
JButton button5 = new JButton("OK");
JButton button6 = new JButton("ändern abbrechen");
JButton button7 = new JButton("Programm beenden");
DefaultTableModel tableModel = new DefaultTableModel();
JTable table = new JTable(tableModel);
Vector students = null;
public static void main(String[] args){
GUIstudent gui = new GUIstudent();
gui.setVisible(true);
}
GUIstudent(){
super("TableTest");
setSize(300,350);
try
{
jbInit();
}
catch(Exception e)
{
e.printStackTrace();
}
}
private void jbInit() throws Exception {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3,1));
panel.add(label1);
panel.add(text1);
panel.add(label2);
panel.add(text2);
panel.add(label3);
panel.add(text3);
JPanel panel1 = new JPanel();
panel1.setLayout(new GridLayout(7,1));
panel1.add(button1);
panel1.add(button2);
panel1.add(button3);
panel1.add(button4);
panel1.add(button5);
panel1.add(button6);
panel1.add(button7);
JPanel panel2 = new JPanel();
panel2.setLayout(new GridLayout());
JScrollPane scrollpane = new JScrollPane(table);
getContentPane().add(scrollpane);
tableModel.addColumn("Eintrag");
tableModel.addColumn("Name");
tableModel.addColumn("Geburtsjahr");
tableModel.addColumn("MatrNr");
panel2.add(table);
//panel2.add(scrollpane);
setLayout(new BorderLayout());
add(panel, BorderLayout.NORTH);
add(panel1, BorderLayout.CENTER);
add(panel2, BorderLayout.SOUTH);
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent event ) {
// Ressourcen freigeben
dispose();
// Programm beenden
System.exit( 0 );
}
});
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
button1_actionPerformed(e);
}
});
//Action-Listener für button7 (Programm beenden)
button7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
button7_actionPerformed(e);
}
});
}
private void button1_actionPerformed(ActionEvent e) {
save();
}
//Action-Event für button7 (Programm beenden)
private void button7_actionPerformed(ActionEvent e) {
System.exit(0);
}
private void save(){
Student newStudent = new Student();
newStudent.setData(text1.getText(),text2.getText(),text3.getText());
students.addElement( newStudent );
tableModel.addRow(new Object[]{String.valueOf(table.getRowCount()+1), text1.getText(),text2.getText(), text3.getText()});
}
}
Der Fehler tritt bei der save() auf und zwar in der Zeile students.addElement( newStudent ).
Hier der Quelltext der Student.java:
import java.io.*;
class Student implements Serializable
{
private String name;
private String geburtsjahr;
private String matrnr;
Student(){}
public void setData(String name, String geburtsjahr, String matrnr){
this.name = name;
this.geburtsjahr = geburtsjahr;
this.matrnr = matrnr;
}
public String getName(){ return name;}
public String getGeburtsjahr(){ return geburtsjahr;}
public String getMatrnr(){ return matrnr;}
}