SWT: Tabelle mit Zellen, die Spalten umspannen

8

In einer Java-Desktop-App mit SWT-basierter Benutzeroberfläche verfügen wir über eine Tabelle, in der sich einige Zeilen über mehrere Spalten erstrecken müssen. Dies wurde mit dem in diesem offiziellen SWT-Snippet gezeigten Ansatz gelöst: Snippet239.java

Es wurde jedoch viel später entdeckt, dass es bei Ubuntu mit dem Standard Ambiance / Radiance-Thema ein großes Problem gibt: Es gibt immer vertikale Linien zwischen den Spalten, sogar für Zellen, die sich über mehrere Spalten erstrecken. Dies wird in den folgenden Screenshots gezeigt:

Wie Sie sehen können, gibt es im ersten Screenshot eine vertikale Linie zwischen Spalte 1 und Spalte 2. Hat jemand eine Idee, wie man diese Zeilen los wird?

Wir haben bereits folgendes versucht:

  • Table.setLinesVisible(false) : Funktioniert nicht, die vertikalen Linien verschwinden nicht.
  • Verwenden Sie zeichnerbasierte Label-Provider, um diese vertikalen Linien zu zeichnen: Funktioniert nicht, die vertikalen Linien scheinen über allem zu liegen, was von den Label-Anbietern gezeichnet wird.
  • Hängen Sie den Paint-Listener an die Tabelle an, um über die vertikalen Linien zu zeichnen: Funktioniert nicht, da es jede Menge Glitches gibt, wenn die Tabelle gescrollt oder anderweitig aktualisiert wird.
  • Das Nebelprojekt verfügt über ein Gitter-Widget, in dem sich Zellen über mehrere Spalten erstrecken können, und es hat kein Problem mit der Vertikalen Zeilen, weil die gesamte Tabelle nicht nativ gezeichnet wird. Wir können jedoch den Aufwand nicht rechtfertigen, unsere Tabelle durch ein Rasterwidget zu ersetzen, nur um das Problem der vertikalen Linien auf einer bestimmten Plattform mit bestimmten Themen zu beheben. Außerdem scheint das Grid-Widget eine Alpha-Version vor der Veröffentlichung zu sein.

Basierend auf den Dingen, die wir bereits versucht haben, gehe ich davon aus, dass ich nur noch in den plattformspezifischen Interna von SWT herumlaufen muss, aber ich weiß nicht einmal, wo ich mit so etwas anfangen soll.

>     
python dude 10.07.2012, 12:04
quelle

1 Antwort

0

Wir haben dieses Problem gelöst, indem wir ein Table mit einer einzelnen Owner-Draw-Spalte verwendet haben, die mehrere Spalten emuliert.

    
python dude 12.08.2012, 22:52
quelle

Tags und Links