Ich quäl mich mal wieder mit der JTable. Diesmal möchte ich einer
Spalte die Breite 0 zuweisen, da diese nur IDs enthält, die der
internen Verwaltung dienen. Ich hab es so probiert:
table.getColumnModel().getColumn(0).setMaxWidth(0);
Aber die Spalte ist nun ein paar Pixel breit und zeigt mit drei
Punkte. Kann ich die Breite nicht ganz auf Null setzen? Ich hab auch
schon dran gedacht, sie "unsichtbar" zu machen. Ich möchte sie aber
nicht aus dem TableModel entfernen :/
Vielleicht habt ihr ja ein paar Ideen, wie ich mein Problem umsetze...
Danke im Vorraus
Ciao
Susanne
Geht evt. über das Interface TableColumnModel mit removeColumn()
HTH
Hausi
Hi Susanne,
mir würde auf Anhieb folgendes einfallen: nimm dein eigenes TableModel
in dem du alle entsprechenden Methoden überschreibst, die Wert anhand
von Spaltennummern liefern. Die Methoden mußt du eben so umsetzen, dass
sie statt Spalte 0 Spalte 1 liefern usw.
Oder du überschreibst das TableColumnModel und erreichst so das
gewünschte Mapping.
Gruß, Sven
Was spricht dagegen, diese Spalte nicht mit einem Index zu versehen?
Bsp: Du hast ein Objekt mit zwei Attributen. Das eine gibst Du als Index
0 zurück und das andere gar nicht. Die Tabelle bekommt dann gar nicht
mit, daß es noch ein Attribut gibt.
Alternative: Man kann über das Tabellenmodell auf Indizies zugreifen,
welche durch getColumnCount() nicht abgedeckt sind. Für das obige
Beispiel bedeutet dies, daß getColumnCount() 1 zurückgibt, bei der
Methode getValueAt() ist jedoch der columnIndex 0 und 1 zulässig...
Uwe
Susanne Klemm wrote:
> Ich quäl mich mal wieder mit der JTable. Diesmal möchte ich einer
> Spalte die Breite 0 zuweisen, da diese nur IDs enthält, die der
> internen Verwaltung dienen. Ich hab es so probiert:
> table.getColumnModel().getColumn(0).setMaxWidth(0);
> Aber die Spalte ist nun ein paar Pixel breit und zeigt mit drei
> Punkte. Kann ich die Breite nicht ganz auf Null setzen? Ich hab auch
> schon dran gedacht, sie "unsichtbar" zu machen. Ich möchte sie aber
> nicht aus dem TableModel entfernen :/
Entweder muesstest du alle drei Aufrufe nach 0 machen:
setMinWidth(0);/setMaxWidth(0);/setPreferredWidth(0);
Der Cursor springt aber trotzdem evtl. in diese column,
so besonders schoen finde ich es nicht. Oder auch
TableColumnModel.removeColumn(column) als eine weitere
Moeglichkeit, bzw. der andere noch gepostete Vorschlag,
hab ich aber nicht ausprobiert so.
Linda
--
(=)
/ li...@jalice.ch - http://www.jalice.net
(=)
/ l.ra...@hswzfh.ch - http://www.hswzfh.ch
(=)
Geht leider nicht. Die Spalte wird zwar optisch (ich denke auch
inhaltlich) entfernt, aber ich kann dann nicht mehr auf den Inhalt
Zugreifen. Ich krieg dann lauter Fehlermeldung a la diesem:
java.lang.ArrayIndexOutOfBoundsException: 4 >= 4
at java.util.Vector.elementAt(Vector.java:427)
at
javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumn
Model.java:277)
at javax.swing.JTable.convertColumnIndexToModel(JTable.java:1668)
[...]
Ich probier nun mal die anderen vorgeschlagenen Wege. Deiner war halt
der am schnellsten durchzuführende *g*
Trotzdem Danke
Ciao
Susanne
"Linda Radecke" <li...@jalice.ch> schrieb im Newsbeitrag
news:3D21B40F...@jalice.ch...
> Susanne Klemm wrote:
> > Ich quäl mich mal wieder mit der JTable. Diesmal möchte ich einer
> > Spalte die Breite 0 zuweisen, da diese nur IDs enthält, die der
> > internen Verwaltung dienen. Ich hab es so probiert:
> > table.getColumnModel().getColumn(0).setMaxWidth(0);
> > Aber die Spalte ist nun ein paar Pixel breit und zeigt mit drei
> > Punkte. Kann ich die Breite nicht ganz auf Null setzen? Ich hab
auch
> > schon dran gedacht, sie "unsichtbar" zu machen. Ich möchte sie
aber
> > nicht aus dem TableModel entfernen :/
> Entweder muesstest du alle drei Aufrufe nach 0 machen:
>
> setMinWidth(0);/setMaxWidth(0);/setPreferredWidth(0);
Wow... das nenn ich doch mal eine einfache schnelle Lösung :) Das war
genau das, was ich gesucht habe.
> Der Cursor springt aber trotzdem evtl. in diese column,
> so besonders schoen finde ich es nicht.
Stört hier weniger, da die meine Applikation eh total mauslastig ist
:)
Vielen Dank
Ciao
Susanne
> Geht leider nicht. Die Spalte wird zwar optisch (ich denke auch
> inhaltlich) entfernt, aber ich kann dann nicht mehr auf den Inhalt
> Zugreifen. Ich krieg dann lauter Fehlermeldung a la diesem:
>
> java.lang.ArrayIndexOutOfBoundsException: 4 >= 4
> at java.util.Vector.elementAt(Vector.java:427)
> at
[...]
Ich glaube der Fehler liegt daran, dass Du auf die Daten über
die Tabelle selbst zugreifst.
Das geht ohne Fehlermeldung über TableModel, ungefähr so:
((DefaultTableModel)table.getModel()).getValueAt(int,int);
Beim Entfernen der Spalte werden die Daten nur aus der Tabelle gelöscht,
aber nicht aus dem Model.
[...]
>
> Susanne
>
Gruß
Alexander
Susanne Klemm wrote:
> "Linda Radecke" <li...@jalice.ch> schrieb im Newsbeitrag
> news:3D21B40F...@jalice.ch...
[...]
> > setMinWidth(0);/setMaxWidth(0);/setPreferredWidth(0);
> Wow... das nenn ich doch mal eine einfache schnelle Lösung :) Das war
> genau das, was ich gesucht habe.
> > Der Cursor springt aber trotzdem evtl. in diese column,
> > so besonders schoen finde ich es nicht.
> Stört hier weniger, da die meine Applikation eh total mauslastig ist
> :)
Hallo Susanne,
wenn es fuer dich so stimmt, freut mich das, bzgl. removeColumn()
findest du auch hier noch einen Abschnitt zum Beachten:
http://www.chka.de/swing/table/columns.html
Ja wenn das so ist...
Stimmt, ich greif eigentlich immer über table.getValueAt() zu. Nur mag
ich das jetzt nicht überall umschreiben :) Aber für's nächste mal,
werd ich's mir merken.
Ciao
Susanne
Susanne Klemm <Sus...@wtfc.de> wrote:
> Ich quäl mich mal wieder mit der JTable. Diesmal möchte ich einer
> Spalte die Breite 0 zuweisen, da diese nur IDs enthält, die der
> internen Verwaltung dienen. Ich hab es so probiert:
Wieso sollte man etwas mit Breite 0 in der Praesentationschicht
noch haben? Im Modell OK, aber warum dann nicht nur dort?
Gruss, Kurt
--
Kurt Harders Modellbahnelektronik
mailto:ku...@kharders.de
Modellbahnelektronik: http://www.modellbahn.kharders.de
privat: http://www.kharders.de
"Susanne Klemm" <Sus...@wtfc.de> wrote:
>
>Punkte. Kann ich die Breite nicht ganz auf Null setzen? Ich >hab auch
>schon dran gedacht, sie "unsichtbar" zu machen. Ich möchte sie aber
>nicht aus dem TableModel entfernen :/
>
ich mache das "immer" so:
...
TableColumn col = null;
... // 0..12
col = new TableColumn(13);
col.setHeaderValue(strColNames[11]);
col.setCellRenderer(default_renderer);
gettblTermin().getColumnModel().removeColumn(col);
...
damit sind sie im Model, aber nicht in der Tabelle sichtbar.
Ich hoffe, ich habe nichts wesentliches vergessen. Aber die Vorredner haben ja
schon Hinweise gegeben ...
ciao
Kay
--
__________________________________________________________
News suchen, lesen, schreiben mit http://newsgroups.web.de