Spalte in JTable aus- und wieder einblenden

Status
Nicht offen für weitere Antworten.
J

Jan

Gast
Hallo zusammen,

ich möchte in einer JTable einige Tabellenspalten mittels CheckBox in der GUI aus- und einblendbar machen. Das Ausblenden habe ich wie folgt realisiert:

table.removeColumn(column);
table.setAutoCreateColumnsFromModel(false);

Das klappt auch problemlos. Beim Wiedereinblenden habe ich allerdings das Problem, dass ich die Spalte nur hinten anfügen kann. Wie bekomme ich die Spalte aber wieder an die Position, in der sie auch vor dem Ausblenden war? Oder gibt es allgemein einen besseren Weg zur Lösung meines Problems?

Vielen Dank schon im Voraus.

Gruß,
Jan
 

foobar

Top Contributor
Alternativ könntest du die Breite der Spalte auf 0 setzen:
Code:
myTable.getColumn("col1").setPreferredWidth(0);
 
B

Beni

Gast
Du koenntest ein eigenes TableModel implementieren. Dieses TableModel kann dann eine Spalte ausblenden, einfach indem es der Tabelle entsprechende Werte uebergibt.

Guck mal in der FAQ nach, da hat es auch noch was zu dem Thema.
 
J

Jan

Gast
Erstmal vielen Dank für die Hilfe.

@Foobar
Offensichtlich interessiert sich meine Tabelle nicht für die neu gesetzte Größe. Zumindest ändert sich nix. Ich schicke nach der Größenänderung

tableModel.fireTableStructureChanged();

Ist das ok? Ich habe Deine Variante versucht mit dem Spaltennamen. das ist allerdings schwierig wegen gleicher Spaltennamen. Daher habe ich folgendes versucht.

myTable.getColumn(myTable.getColumnModel().getColumn(2).getIdentifier()).setPreferredWidth(0);

Das sollte doch funktionieren, oder?

@Beni
Was für Werte meinst du? Ich habe ein eigenes TableModel, aber was soll das Modell der Tabelle setzen?
 
B

Beni

Gast
Das Model gibt ja Werte zurück wie "getColumnCount" und so. Und anstelle von "x" gibst du nun "x-1" zurück, wenn eine Column ausgeblendert werden soll. (Entsprechend musst du nur daran denken, dass bei "getValueAt", etc... der Index der Column um 1 verschoben sein kann). Dann macht das Umschalten Column ein/aus praktisch keine Arbeit mehr (du musst nicht irgendwo wild Daten herumkopieren...)
 
J

Jan

Gast
@Beni
Da werde ich mal drüber nachdenken. Da ich aber von insgesamt 11 Spalten 4 ein/ausblendbar machen will und wenn möglich auch noch jede von den 4 einzeln, scheint das recht aufwendig zu sein. Vielleicht denke ich aber zu kompliziert und es vereinfacht sich beim weiteren Nachdenken. :)

@foobar
Diese Zeile aus meinem obigen Posting

myTable.getColumn(myTable.getColumnModel().getColumn(2).getIdentifier()).setPreferredWidth(0);

ist natürlich völliger Schwachsinn. Aber auch wenn ich, wie eigentlich gewollt, setPreferredWidth direkt an der entsprechenden Spalte aufrufe ändert sich an der Tabelle nichts.
 
G

Guest

Gast
Der Grund, warum ich keine Größenänderung nach dem Setzen der neuen Spaltenbreite gesehen habe, war, dass ich das falsche Änderungsevent gesendet habe. Wenn ich statt
Code:
tableModel.fireTableStructureChanged();
dieses
Code:
tableModel.fireTableChanged(new TableModelEvent(tableModel));
verwende, ist eine Größenänderung sichtbar.

ABER:

Die Spaltenbreite ist nicht 0 wie gesetzt, sondern die Spalte ist noch immer sichtbar und zwar so breit, dass noch drei Punkte in jede Zelle passen. Das ist doch sicher irgendeine der vielen Einstellungen der Tabelle, oder? Weiß jemand Rat?
 

Jan

Mitglied
Der Gast war ich.
Das Forum hat mich bisher so sehr überzeugt, dass ich mich gleich angemeldet habe. :wink:
 

foobar

Top Contributor
Wenn du das ganze vernünftig lösen willst, mußt du dir einen Decorator schreiben der die sichtbaren Spalten in die realen Spalten konvertiert und umgekehrt. Falls es sich immer nur um eine Spalte handelt, die unsichtbar sein soll, kannst du das so lösen wie Beni es beschrieben hat. Also falls die Spalte unsichtbar ist müssen die folgenden Spaltenindice um eins erhöht werden.
 

Jan

Mitglied
foobar hat gesagt.:
Wenn du das ganze vernünftig lösen willst, mußt du dir einen Decorator schreiben der die sichtbaren Spalten in die realen Spalten konvertiert und umgekehrt.

Ich erzeuge also jedesmal eine neue Tabelle mit der entsprechenden Anzahl von Spalten und fülle sie dann mit den entsprechenden Werten? Der Decorator würde dabei die Werte den Spalten zuordnen, richtig? Ein "Verstecken" ist also nicht auf vernünftige Weise möglich?

Gibt es da vielleicht Beispiele für eine solche Anwendung? Das Problem bzw. der Wunsch so etwas zu realisieren tritt doch bestimmt häufiger auf, oder?

Wieso kann man die Spaltenbreite nicht wirklich auf 0 setzen?
 

foobar

Top Contributor
Ich erzeuge also jedesmal eine neue Tabelle mit der entsprechenden Anzahl von Spalten und fülle sie dann mit den entsprechenden Werten?
Du erzeugst einen JTable mit 2 Models, wobei das eine Model die Anfragen für das andere Model übersetzt. Guck dir mal den SortDecorator an, dann wirst du sehen was ich meine.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
E Spalte in JTable löschen AWT, Swing, JavaFX & SWT 4
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
C Spalte aus JTable löschen AWT, Swing, JavaFX & SWT 8
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
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