Ich würde dir raten gleich das Model zu überschreiben. Der Code wird dadurch viel kürzer und logischer, anstatt jedes mal ein neues Model zu erzeugen. Außerdem wird es noch um einizges schwieriger, wenn du im JTable Änderungen vornehmen lassen willst. So dient das Model nur als Schnittstelle zwischen Liste und Tabelle von der direkt gelesen wird.
[code=Java]
import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class TableModelExample {
private static final String[] TABLE_HEADER_NAMES = {
"Flugnummer", "Startzeit", "Startbahn", "Ankunft"
};
private List<Flugzeug> array;
private JTable liste;
public TableModelExample() {
array = new ArrayList<TableModelExample.Flugzeug>();
array.add(new Flugzeug(0, "11:00", 1, "19:00"));
array.add(new Flugzeug(1, "15:00", 1, "21:00"));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
TableModel model = new DefaultTableModel() {
public int getColumnCount() {
return(TABLE_HEADER_NAMES.length);
}
public String getColumnName(int column) {
return(TABLE_HEADER_NAMES[column]);
}
public boolean isCellEditable(int row, int column) {
return(false);
}
public Object getValueAt(int row, int column) {
Flugzeug flugzeug = array.get(row);
if(column == 0) {
return(flugzeug.getFlugnummer());
} else if(column == 1) {
return(flugzeug.getStartzeit());
} if(column == 2) {
return(flugzeug.getStartbahn());
} if(column == 3) {
return(flugzeug.getAnkunft());
}
return(null);
}
public int getRowCount() {
return(array.size());
}
};
liste = new JTable(model);
frame.add(new JScrollPane(liste, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new TableModelExample();
}
});
}
public class Flugzeug {
private int flugnummer;
private String startzeit;
private int startbahn;
private String ankunft;
public Flugzeug(int flugnummer, String startzeit, int startbahn, String ankunft) {
this.flugnummer = flugnummer;
this.startzeit = startzeit;
this.startbahn = startbahn;
this.ankunft = ankunft;
}
public String getAnkunft() {
return ankunft;
}
public int getFlugnummer() {
return flugnummer;
}
public int getStartbahn() {
return startbahn;
}
public String getStartzeit() {
return startzeit;
}
}
}
[/code]
Konstrolliere auch bitte folgendes: Variablenamen allgemein, programmieren gegen das Interface und getter/setter statt public variablen.