hallo,
bisher hab ich mich ja mit simplen Tabellen zufrieden begeben, aber nun möchte ich doch ein wenig mehr Kontrolle darüber wie diverse Cells gerendert/editiert werden und vor allem das die Spaltenbreite bleibt auch wenn sich an der Tabellenstruktur was aendert.
So .. ein wenig rumgewühlt in der API und momentan bin ich auf folgendem Stand:
- JTable kann man ja mit nem normalen TableModel zufrieden stellen .. DefaultTableModel hält dazu Daten- sowie Spaltennamen-Vektor bereit und der Table kann das alles aus dem DefaultTableModel auslesen. Soweit so gut, das hab ich bisher auch umgesetzt (eigenes TableModel von Abstract abgeleitet mit Daten/Spaltennamenliste)
- es ist möglich vom JTable das TableColumnModel abzufragen ... das wäre ja nun indirekt im TableModel vorhanden .. bringt aber der Abfrage an sich kein Gewinn, da bei Änderungen der Spaltenstruktur ein neues TableColumnModel erzeugt wird und ich jegliche vorhandene Spalteninfos (wie zB die Breite) verliere => ergo .. brauch ich selbst ein eigenes TableColumnModel was mir diese Infos auch behält und Spaltenbreiten anpasst etc.
Das würde wiederum bedeuten das meine Spaltenliste in meinem eigenen TableModel doch dort gar nix mehr zu suchen hat, da diese Info doch nun im TableColumnModel liegt, oder?! Das wiederum heisst das ich in meinem TableModel nen Verweis auf das TableColumnModel brauche, um die ganzen Methoden à la "getColumnCount" "getColumnName" "getColumnClass" etc. durch das Model zu propagieren!?
Weiterhin brauch ich dann CellEditoren und CellRenderer für einige Spalten .. die brauche ich dann nur dem TableColumnModel zuzuspielen!?
also:
JTable kennt TableModel und TableColumnModel (gibt nen Konstruktor der das beides aufnehmen kann)
TableModel kennt TableColumnModel um für die getColumnXXX-Methoden das richtige zurück zu geben .. weiterhin kennt es die Daten aller Row's (mit ausnahme der Spalten-reihe = row 0!?)
TableColumnModel kennt die Spaltenliste und alles was ich an CellRenderern und CellEditoren brauch
soweit korrekt?! ... das is ja schon ein kleiner Batzen Klassenabhängigkeiten der sich hier mit einmal strickt, daher die Frage ob ich das so richtig verstanden habe
Danke schonmal
bisher hab ich mich ja mit simplen Tabellen zufrieden begeben, aber nun möchte ich doch ein wenig mehr Kontrolle darüber wie diverse Cells gerendert/editiert werden und vor allem das die Spaltenbreite bleibt auch wenn sich an der Tabellenstruktur was aendert.
So .. ein wenig rumgewühlt in der API und momentan bin ich auf folgendem Stand:
- JTable kann man ja mit nem normalen TableModel zufrieden stellen .. DefaultTableModel hält dazu Daten- sowie Spaltennamen-Vektor bereit und der Table kann das alles aus dem DefaultTableModel auslesen. Soweit so gut, das hab ich bisher auch umgesetzt (eigenes TableModel von Abstract abgeleitet mit Daten/Spaltennamenliste)
- es ist möglich vom JTable das TableColumnModel abzufragen ... das wäre ja nun indirekt im TableModel vorhanden .. bringt aber der Abfrage an sich kein Gewinn, da bei Änderungen der Spaltenstruktur ein neues TableColumnModel erzeugt wird und ich jegliche vorhandene Spalteninfos (wie zB die Breite) verliere => ergo .. brauch ich selbst ein eigenes TableColumnModel was mir diese Infos auch behält und Spaltenbreiten anpasst etc.
Das würde wiederum bedeuten das meine Spaltenliste in meinem eigenen TableModel doch dort gar nix mehr zu suchen hat, da diese Info doch nun im TableColumnModel liegt, oder?! Das wiederum heisst das ich in meinem TableModel nen Verweis auf das TableColumnModel brauche, um die ganzen Methoden à la "getColumnCount" "getColumnName" "getColumnClass" etc. durch das Model zu propagieren!?
Weiterhin brauch ich dann CellEditoren und CellRenderer für einige Spalten .. die brauche ich dann nur dem TableColumnModel zuzuspielen!?
also:
JTable kennt TableModel und TableColumnModel (gibt nen Konstruktor der das beides aufnehmen kann)
TableModel kennt TableColumnModel um für die getColumnXXX-Methoden das richtige zurück zu geben .. weiterhin kennt es die Daten aller Row's (mit ausnahme der Spalten-reihe = row 0!?)
TableColumnModel kennt die Spaltenliste und alles was ich an CellRenderern und CellEditoren brauch
soweit korrekt?! ... das is ja schon ein kleiner Batzen Klassenabhängigkeiten der sich hier mit einmal strickt, daher die Frage ob ich das so richtig verstanden habe
Danke schonmal