Swing [JXTable] getColumnIndex mit dynamischen TableHeader

norbert

Mitglied
hallo forum,

Ich versuche mal mein Problemchen so gut wie möglich zu beschreiben.
Zum Einsatz kommt eine JXTable mit aktivem ColumnControl und ein eigener TableCellRenderer.
Das eigentliche Problem bereitet mir die Methode getTableCellRendererComponent, konkret folgendes:

Java:
if (column == ALBUM_COLUMN_MODEL.getColumnIndex("POPM")) ....

... denn wenn der Benutzer die Spalte "POPM" ausblendet oder verschiebt, fliegt hier
logischerweise eine Exception (Identifier not found). Über die ColumnExtension bekomme ich
nur den ModelIndex, nicht aber den ViewIndex, den ich im Renderer zwangsläufig benötige.

Wie aber kann ich sonst den Spalten-index (View) mit dem Spalten-Namen auflösen ?


Danke schonmal im Vorraus

Gruss
Nobbi
 

ymene

Bekanntes Mitglied
Du könntest dir die Spalte aus der Table holen via ViewIndex und die Spalte nach ihrem Identifier fragen. Diesen dann vergleichen mit dem von dir gesuchten Identifier.

Grüße,
ymene
 

norbert

Mitglied
Hallo ymene

Gut, aber wie oder woher bekomme ich den "ViewIndex" wenn die Spalte garnicht sichtbar ist ,
oder vom Nutzer verschoben wurde ?

Ich habe im Renderer ja nur column vom typ int, also muss ich irgendwie anhand des
Spaltennamen den aktuellen viewIndex ermitteln.
 

ymene

Bekanntes Mitglied
Die Column, die du in getTableCellRendererComponent bekommst ist der aktuelle ViewIndex. Für den jeweiligen Renderer möchtest du ja zu dieser Zeit nur wissen, welche Komponente genau für diensen Index den Inhalt rendern soll. Wenn die Spalte nicht sichtbar ist, wird die RendererMethode natürlich auch nicht aufgerufen und ist sie verschoben erhälst du in diesem Moment ja auch den entsprechend neuen Index über diese Methode und dann natürlich auch vom Table wieder die richtige Column.

Daher musst du in diesem Zusammenhang nicht mit indizes wirklich rumschlagen. In anderen Zusammenhängen kann dies natürlich wichtig sein, aber auch dafür bietet die JXTable nützliche Methoden wie:

convertColumnIndexToModel und
convertColumnIndexToView
 

norbert

Mitglied
ja, natürlich, jetzt wo du es sagst, ymene, habe ich mal folgendes probiert:

Java:
 if (ALBUM_COLUMN_MODEL.getColumn(column).getIdentifier().equals("POPM")) {

Das funktioniert jetzt. Puh , schwere Geburt ;)

Was mich aber trotzdem wundert, warum "ColumnModel.getColumnIndex" bei nicht
vorhanden Identifier, statt -1 gleich eine Exception wirft. Keine Ahnung ... egal.


Vielen Dank für deine Mühe ymene

Gruss
 
Zuletzt bearbeitet:
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben