Spalte in JTable löschen

Status
Nicht offen für weitere Antworten.

Enton

Mitglied
Hallo,
ich habe ein Problem beim löschen von Spalten in einer JTable.
Laut dem, was ich bisher gefunden habe sollte meine Spalte eigentlich gelöscht werden, wird sie aber leider nicht.

meinetabelle.getColumnModel().removeColumn(meineTabelle.getColumnModel().getColumn(1));

Im tabellencount ist anschließend auch eine Zeile weniger, es werden aber nach wie vor alle angezeigt. Muss ich die irgendwie noch im tableModel löschen? wie geht das?
Das hinzufügen von Spalten mache ich über tableModel.addColumn.

Ideen, Tipps?
 

KrokoDiehl

Top Contributor
Eine JTable basiert auf einem Tabellenmodell und dort gibt es auch Methoden á la
Code:
getColumnCount()
.
Ich würde sagen dass der "saubere" Ansatz hier wäre, dass du die Spalte im Tabellenmodell löschst und anschließend ein
Code:
fireTableStructureChanged()
auslöst (falls dein Modell von
Code:
AbstractTableModel
erbt).
 

Enton

Mitglied
Hallo,
im Tabellenmodell finde ich leider keine entsprechenden Methoden zum löschen von Spalten. Mein Model erbt von AbstractTableModel, die Methode fireTableStructureChanged() zu verwenden ist somit kein Problem.
 

KrokoDiehl

Top Contributor
Nun, das Tabellenmodell liefert dir vor allem die Datengrundlage für deine Tabelle und u.A. auch die Anzahl der Zeilen und Spalten (sowie die Spaltenüberschriften).
Ich weiß nun nicht, ob du dein eigenes Tabellenmodell implementiert hast oder ob du ein Standardmodell nimmst (z.B. durch den Konstruktor
Code:
JTable(Object[][], Object[])
).

Wenn du dein eigenes Tabellenmodell hast, dann kannst du selbst steuern, welche Spalten angezeigt werden und welche nicht. Natürlich muss man das entfernen einer Spalte dann auch selbst handhaben (entweder dadurch dass man die entsprechenden Daten löscht, oder die Anzeigewerte entsprechend bestimmt). Dies müsste vor allem die Methoden
Java:
getColumnCount()
getColumnName(int)
getValueAt(int, int)
betreffen. In diesem Fall kann ich wohl eher helfen :)

Beim Standardmodell und der Arbeit mit einem ColumnModel bin ich etwas überfragt. Aber ich vermute, dass der Aufruf von
Code:
removeColumn()
nicht dafür sorgt, dass deine Datengrundlage entsprechend angepasst wird, d.h. das 2D-Array (oder sonstwas) hat dennoch x Spalten statt x-1. Daher wird die entfernte Spalte wohl immernoch angezeigt.
Wenn es also nur um die Anzeige der Tabelle geht, kannst du auch mal versuchen die Spalte, die entfernt werden soll auf Breite 0 zu setzen. Wenn auch die dazugehörigen Daten gelöscht werden soll, musst du das über das Tabellenmodell wohl oder übel selbst machen.
 

Enton

Mitglied
Bislang hatte ich kein eigenes Tabellenmodell aber da es wohl nicht anders gegangen wäre, habe ich nun eins geschrieben. Beim googlen hat mir folgender Treffer geholfen:

public void removeColumnAndData(JTable table, int vColIndex) {
MyDefaultTableModel model = (MyDefaultTableModel)table.getModel();
TableColumn col = table.getColumnModel().getColumn(vColIndex);
int columnModelIndex = col.getModelIndex();
Vector data = model.getDataVector();
Vector colIds = (model).getColumnIdentifiers();

// Remove the column from the table
table.removeColumn(col);

// Remove the column header from the table model
colIds.removeElementAt(columnModelIndex);

// Remove the column data
for (int r=0; r<data.size(); r++) {
Vector row = (Vector)data.get(r);
row.removeElementAt(columnModelIndex);
}
model.setDataVector(data, colIds);

// Correct the model indices in the TableColumn objects
// by decrementing those indices that follow the deleted column
Enumeration e = table.getColumnModel().getColumns();
for (; e.hasMoreElements(); ) {
TableColumn c = (TableColumn)e.nextElement();
if (c.getModelIndex() >= columnModelIndex) {
c.setModelIndex(c.getModelIndex()-1);
}
}
model.fireTableStructureChanged();
}

static class MyDefaultTableModel extends DefaultTableModel {
public Vector getColumnIdentifiers() {
return columnIdentifiers;
}
}
damit funktioniert es jetzt auch. Danke für die Hilfe,
Betty
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Spalte aus JTable löschen AWT, Swing, JavaFX & SWT 8
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
J JTable filtern nach einer Spalte AWT, Swing, JavaFX & SWT 2
G JTable als fixierte Spalte in Scrollpane scrollt nicht mit... AWT, Swing, JavaFX & SWT 1
Bartertown JTable - Verschiedene Komponenten in einer Spalte unterbringen AWT, Swing, JavaFX & SWT 3
S Swing JTable zusätzliche Spalte mit einer Checkbox einfügen AWT, Swing, JavaFX & SWT 7
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
S JTable Spalte "normale" Breite? AWT, Swing, JavaFX & SWT 5
F JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte AWT, Swing, JavaFX & SWT 3
GianaSisters Swing ComboBox im jTable (in bestimmter Zelle nicht über die ganze Spalte) AWT, Swing, JavaFX & SWT 4
N Swing JTable: Objekttyp einer Spalte nachträglich ändern AWT, Swing, JavaFX & SWT 6
A Swing Spalte in JTable ausblenden AWT, Swing, JavaFX & SWT 4
T JTable mit Renderer sortiert die gerenderte Spalte nicht richtig AWT, Swing, JavaFX & SWT 2
B JTable, Spalte nicht verschiebbar AWT, Swing, JavaFX & SWT 2
R JTable immer nur die letzte Spalte markiert.... AWT, Swing, JavaFX & SWT 4
S Swing JTable: in erster Spalte Image darstellen AWT, Swing, JavaFX & SWT 30
T JTable - Einzelne Spalte nicht sortieren? AWT, Swing, JavaFX & SWT 2
V JTable: Sortierung einer Spalte zum Programmstart? AWT, Swing, JavaFX & SWT 3
G JTable warten bis Spalte verschoben wurde AWT, Swing, JavaFX & SWT 2
R JTable: Zellen einer Spalte unterschiedlich befüllen AWT, Swing, JavaFX & SWT 2
G JTable in Spalte von anderer JTable nicht editierbar AWT, Swing, JavaFX & SWT 7
G Alle Werte einer Spalte in JTable zusammenrechnen AWT, Swing, JavaFX & SWT 2
J in JTable ganze Spalte editierbar machen AWT, Swing, JavaFX & SWT 17
J JTable ganze Spalte sperren AWT, Swing, JavaFX & SWT 6
mabe83 Kontinuierlich verbleibende Zeit in JTable Spalte anzeigen AWT, Swing, JavaFX & SWT 2
P JTable:Sortierung nach der Zeit/Spalte mit Calendar-Objekten AWT, Swing, JavaFX & SWT 2
D JTable 1. Spalte fixieren AWT, Swing, JavaFX & SWT 3
E JTable nur die erste Spalte auswählbar? AWT, Swing, JavaFX & SWT 4
B JTable - Wechsel der Spalte bei TAB, RETURN oder Maus AWT, Swing, JavaFX & SWT 5
S Hintergrundfarbe in einer Spalte der JTable verändern AWT, Swing, JavaFX & SWT 3
A JTable: Zeit in Spalte ausgeben AWT, Swing, JavaFX & SWT 2
F JTable Spalte sortieren mit lauter JComboboxen ? AWT, Swing, JavaFX & SWT 15
S Checkbox oder String in JTable-Spalte AWT, Swing, JavaFX & SWT 4
U JTable Position der Spalte abfragen AWT, Swing, JavaFX & SWT 7
E JTable; Zeilen der ersten Spalte definieren? AWT, Swing, JavaFX & SWT 4
H JTable Text aus mehreren Zellen in einer Spalte kopieren? AWT, Swing, JavaFX & SWT 3
L Falsche Zeile gelöscht nach Spalte Sortierung in JTable AWT, Swing, JavaFX & SWT 2
L JTable (DefaultTableModel) nach Spalte sortieren-TableSorter AWT, Swing, JavaFX & SWT 2
S JTable Spalte hinzufügen AWT, Swing, JavaFX & SWT 3
J Spalte in JTable aus- und wieder einblenden AWT, Swing, JavaFX & SWT 10
Student JTable - eine fixe Spalte, der Rest scrollbar AWT, Swing, JavaFX & SWT 18
V JTable mit mehreren Componenten in einer Spalte ? AWT, Swing, JavaFX & SWT 6
D JTable Spalte unsichtbar machen AWT, Swing, JavaFX & SWT 6
missy72 JavaFX TableView Spalte zwischen den Zeilen AWT, Swing, JavaFX & SWT 5
G JavaFX TableView Wert in Spalte ändern AWT, Swing, JavaFX & SWT 0
N Warum ist die Spalte weg? AWT, Swing, JavaFX & SWT 61
L JavaFX TableView mit Attributs der Modellreferenzerierung für die Spalte AWT, Swing, JavaFX & SWT 3
M JavaFX TableView nach Spalte sortieren AWT, Swing, JavaFX & SWT 1
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
T SWT Table (mit Spinner Spalte) Daten auslesen AWT, Swing, JavaFX & SWT 4
L Swing Button in GridBackLayout positionieren und TitleBorder pro Spalte hinzufügen AWT, Swing, JavaFX & SWT 9
X Icons in einer Spalte darstellen AWT, Swing, JavaFX & SWT 6
B Swing DefaultTableModel, Checkbox in Spalte AWT, Swing, JavaFX & SWT 4
L Action listener in bestimmter spalte AWT, Swing, JavaFX & SWT 2
R JTree - Spalte aufklappen AWT, Swing, JavaFX & SWT 2
M JList von Beginn an sortiert nach Spalte ohne Klick? AWT, Swing, JavaFX & SWT 2
A Tabellen Spalte löschen AWT, Swing, JavaFX & SWT 6
F Swing J(X)Table Spalten umsortieren NUR im View (Wie finde ich eine Spalte nach Name?) AWT, Swing, JavaFX & SWT 3
slawaweis JXTreeTable, jede Spalte einzeln scrollbar machen? AWT, Swing, JavaFX & SWT 2
N Gridlayout 2. Spalte füllen AWT, Swing, JavaFX & SWT 4
I SWT Größe einer Tabellenzeile, -spalte ändern AWT, Swing, JavaFX & SWT 8
mabe83 Swing: jTableCellRenderer -> Klappt nur bei String-Spalte AWT, Swing, JavaFX & SWT 2
A Icon,zentriert,Farbiger Text alles in einer Tabelle/Spalte ? AWT, Swing, JavaFX & SWT 4
W Spalte einer Tabelle as nicht editierbar setzen - wie ? AWT, Swing, JavaFX & SWT 2
W Wie setz ich beim TableRowSorter die zu sortierende Spalte AWT, Swing, JavaFX & SWT 4
C MouseListener für Spalte eines JTables AWT, Swing, JavaFX & SWT 4
D GridLayout mit nur einer Spalte, aber n Zeilen AWT, Swing, JavaFX & SWT 2
D GridBagLayout: 2. Spalte auf JPanel-Breite expandieren AWT, Swing, JavaFX & SWT 2
M Spalte mit fortlaufener Zeit AWT, Swing, JavaFX & SWT 6
B Eine Spalte in drei verschiedenlange Spalten aufteilen AWT, Swing, JavaFX & SWT 2
Luma Spalte einer Tabelle ausblenden AWT, Swing, JavaFX & SWT 8
S TableTree - Tree nicht in erster Spalte AWT, Swing, JavaFX & SWT 5
F Ausrichtung einer Spalte ändern? AWT, Swing, JavaFX & SWT 4
L Erste Spalte eines JTables soll nicht editierbar sein. AWT, Swing, JavaFX & SWT 7
S fehlende spalte bei gridbaglayout AWT, Swing, JavaFX & SWT 7
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben