Problem: Ich benötige eine SWT Tabelle (JFace TableViewer) mit variabler Zeilenhöhe. Tatsächlich löste ich das auf meiner Entwicklungsmaschine (laufendes Ubuntu 10.10). Leider funktioniert das nicht unter Windows oder Mac.SWT Tabelle mit variabler Zeilenhöhe: Arbeiten unter Linux, aber nicht unter Mac/Windows
Anfangs dachte ich, ich benutze die Bibliotheken nicht richtig. Aber jetzt fürchte ich, dass das, was ich tun möchte, unter Windows einfach nicht möglich ist. Ich hoffe jemand hier überzeugt mich sonst.
Um zu reproduzieren: anstatt meinen Code hier bereitzustellen, baute ich ein minimales Programm, um das Problem zu reproduzieren. Ich begann mit dem folgenden Snipplet:
I modifiziert, um die Aktualisierung (Methode) zwei Textzeilen für Verzeichnisse zu erzeugen und eine Zeile für Dateien (eine Umgebung mit variabler Zeilenhöhen zu simulieren):
... if (file.isDirectory()) { cell.setText(styledString.toString() + "\n" + styledString.toString()); cell.setImage(IMAGE1); } else { cell.setImage(IMAGE2); } ...
Dies funktioniert wie unter Linux, aber unter Windows haben alle Zeilen die gleiche Höhe. Insbesondere ist nur eine Zeile sichtbar.
Als nächstes versuchte ich SWT zu helfen, indem ich measure() intelligenter machte. So schrieb ich measure() wie folgt aus:
protected void measure(Event event, Object element) { if (((File) element).isDirectory()) { event.height = 32; } else { event.height = 16; } super.measure(event, element); }
Das Ergebnis: Alle Zeilen die Höhe haben 32. Auch dies funktioniert wie unter Linux gedacht.
Meine Angst ist, dass unter Windows einfach alle Zeilen die gleiche Höhe haben müssen. Das wäre ein Showstopper für mich. Kann jemand das bestätigen, oder besser noch, einen Workaround bereitstellen?
Danke!
Eigentlich könnte ich eine Erklärung für dieses Verhalten, und vielleicht sogar ein Fix (ich habe noch versuchen, diese aus) gefunden: https://bugs.eclipse.org/bugs/show_bug .cgi? id = 148039 – jastram
Vielen Dank für die Antworten. Am Ende habe ich http://sourceforge.net/projects/agilegrid/ benutzt, das auch die Tabelle nativ wie KTable zeichnet. Es ist eine Freude mit ihr zu arbeiten, im Vergleich zu SWT. – jastram