JTable zeigt keine Column-Namen an

Dey

Banned
Registriert
Mai 2005
Beiträge
1.925
Object[] o = {e.getAusgabe(), e.getBezeichnung(), e.getDatum(), e.getKategorie()};
DefaultTableModel model = new DefaultTableModel();
JTable tbl = new JTable(model);
tbl.setBounds(20, 20, 600, 400);
model.addColumn("Ausgabe");
model.addColumn("Bezeichnung");
model.addColumn("Datum");
model.addColumn("Kategorie");
model.addRow(o);

Könnt ihr mir helfen? Ich kriege es leider nicht hin, die Column-Namen anzeigen zu lassen. Sonst klappt das Füllen mit Werten jedoch.
 
Hm, ich packe das Model immer erst mit setModel nach dem füllen an den Table (bzw. hole es mir vom Table und manipuliere es dann)...vielleicht wäre es das schon, ansonsten sieht der Code korrekt aus. Du kannst natürlich auch erst das Model füllen und erst dann den JTable erzeugen und das Model im Konstruktor übergeben (zumindest die Columns würde ich direkt nach dem erzeugen des Models hinzufügen, die Rows werden i.d.R. ja erst später gefüllt)
 
Du musst das JTable in einen JScrollPane stecken, wie es in der Doku steht ;)
Wenn du das nicht willst, musst du etwas umbauen.

The scroll pane automatically places the table header at the top of the viewport. The column names remain visible at the top of the viewing area when the table data is scrolled.

If you are using a table without a scroll pane, then you must get the table header component and place it yourself.
 
Zuletzt bearbeitet:
aktualisiert sich die JTable automatisch wenn sich das Model ändert? Bin mir grad nicht sicher. Probier mal die JTable erst am Schluss zu erzeugen, wenn das Model schon seine Daten hat.
 
Super. Habe es mit euren Tipps auf die Reihe gekriegt. Dazu musste ich tatsächlich nur die Tabelle in ein ScrollPane einfügen vorher.

Das Model darf auch nachher manipuliert werden.
 
Was man nicht alles vergisst, wenn man mit einer guten IDE arbeiten...

Dey schrieb:
Das Model darf auch nachher manipuliert werden.

Darf schon, nur werden die Änderungen teilweise nicht sichtbar, da die Anzeige nicht erneuert wird.
Arbeitet man z.B. mit Objekten im Table und manipuliert diese, sodass auch die Anzeige verändert werden müsste tut sich erstmal nichts. Mit einem "fireTableDataChanged()" (ich glaube die heißt so...) kann man dem Model dann sagen, dass es verändert wurde und der Table aktualisiert sich.
 

Ähnliche Themen

Zurück
Oben