JTable Multiple Row Header Example - Probleme mit der Höhe der Zellen

globolus

Mitglied
Hallo zusammen,

ich habe ein Problem mit einer JTable die "multiple row header" besitzt. Hoffe ihr könnt mir vielleicht helfen. Habe bereits mehrfach das Netz durchsucht, allerdings leider keine Lösung finden können.

Zu meinem Problem:

Ich habe mir unter folgender URL den Beispielquellcode besorgt und diesen auch zum Laufen bekommen:

How do I create a JTable with multiple row headers?

oder

multiple Row Header Example : Grid TableSwing ComponentsJava

Wenn ich die Anwendung nun bei mir starte passen die Höhen der Row Header Zellen nicht mit den Höhen der eigentlichen Tabellenzellen überein. (Sprich: die Zellen unter den Spalten A,B,C haben eine andere Höhe als die Überschriften der jeweiligen Zeile "SNo.", "1", "2", usw.)

Dabei sieht die Grafik, die über dem Beispiel steht, korrekt aus.

Mich würde interessieren, ob jemand mit diesem Beispiel schon mal die selben Erfahrungen gemacht
und eventuell eine Lösung gefunden hat?

Ich habe mal versucht in der Klasse MultiSpanCellTable.java die Zellenhöhe zu beinflussen (wegnahme rowMargin, festes Setzen der Zellenhöhe):

[JAVA=44]
int aCellHeight = rowHeight + rowMargin;
cellFrame.y = row * aCellHeight;
cellFrame.height = n[CellSpan.ROW] * aCellHeight;
[/code]

Jedoch ohne Erfolg.
 
Das ist Code, der unter 1.1 geschrieben wurde. Viele der schönen Beispiele von Tamemasa laufen aber bereits seit mehreren Javaversionen nicht mehr, bzw. sehen verhunzt aus.
Leider hat sich bisher niemand gefunden, den Code wieder auf Vordermann zu bringen - oder es geht wirklich nicht mehr.
 
Vielen Dank für den Hinweis!

Habe selber noch etwas ausprobiert.

Wenn man in der Klasse MultiSpanCellTable.java in der Methode getCellRect vor dem return folgenden Code einträgt:

[JAVA=71]
this.setIntercellSpacing(new Dimension(0,0));

return cellFrame;
[/code]

wird der Abstand zwischen den Zellen entfernt und die Tabelle sieht zunächst einmal sauber aus.

Problem ist jetzt nur, dass er aus mir bisweilen ungeklärten Gründen in eine Endlos-Schleife läuft.
Werde mal schauen, ob ich das Problem noch behoben bekomme.
 
Ich habe auch mal mit MultiSpanCellTable experimentiert und einige Fehler beim Zeichnen sowie im dazugehörigen Model behoben. Den Thread findet man sicher noch über die Forumsuche.

Dass die Beispiele mit Java 1.1 geschrieben wurden, dürfte keinen Einfluss auf die Ansicht haben, weil Swing-Komponenten auf AWT basieren und AWT-Komponenten sich in den letzten Jahren praktisch nicht verändert haben.
Abgesehen davon, erben einige Komponenten der Code-Beispiele von Swing-Komponenten. Und bei Swing hat sich einiges getan...

Die Endlosschleife kommt aus dem fehlerhaften MultiSpanCellTableModel.
 
Erledigt!

Habe eine für meine Zwecke ausreichende Lösung gefunden:

Das setzen von IntercellSpacing nicht in der Klasse MultiSpanCellTable.java vornehmen,
sondern in der Klasse MultipleRowHeaderExample.java:

[JAVA=88]
fixedTable = new MultiSpanCellTable( fixedModel );
table = new JTable( model );
fixedTable.setIntercellSpacing(new Dimension(0,0));
[/code]

Dann existiert zwar kein Abstand zwischen den Zellen, dafür passen aber die Höhen der Tabellenzellen und der RowHeader überein.
 

Zurück
Oben