2017-06-07 6 views
-1

Hintergrund: Ich habe eine Jface-Tabelle, auf der ich für jede Spalte den Bearbeitungs-Support mit Text-Zelleneditor eingestellt habe. Es gibt ungefähr 20 Spalten.Jface Tabellenzeilenvalidierung

Problem: Ich möchte ungültigen Zeilenfeld Text mit dunkelroter Farbe und ganze Zeile mit hellroter Farbe hervorheben.

Was ich ab jetzt versucht: 1. Ich habe ungültiges Feld (Einzelzelle der Zeile) mit Label-Anbieter getBackgroundColor() und getForgroundColor() markiert. 2. Ich habe versucht CellEditors setValidator() -Methode einen Validator hinzuzufügen, aber ich möchte nicht ungültigen Text aus einer Zelle löschen, ich möchte es nur hervorheben. 3. Ich habe einen Ansatz, ein Flag für jede Zelle zu verwenden, um die Gültigkeit dieser Zelle zu überprüfen, wenn eines der Flags wahr ist, werden alle Zellen dieser Zeile hervorgehoben (kann unter Verwendung von Label-Providern erreicht werden). Aber ich denke, dass dieser Ansatz die Leistung für meinen Tisch beeinflussen wird. 4. Ich bin mir nicht sicher, ob die Performance der Tabellenaktualisierungsstrategie von Jface Auswirkungen auf die Performance hat. Also ich benutze es nicht.

Grund, die ganze Reihe der Tabelle hervorgehoben ist: Tabelle hat 20+ Spalten und Benutzer nicht wollen, um die Tabelle scrollen Problemstelle zu erfahren.

Bitte schlagen Sie vor, wenn Sie irgendwelche besseren Lösungen kennen.

Antwort

1

Die Verwendung von Label-Anbietern für die Farben ist der Weg, dies zu tun.

Der Label-Anbieter wird nur nach der Farbe gefragt, wenn die Zeile erstellt oder aktualisiert wird - durch Aufruf eines der Viewer-Methoden refresh oder update, so dass dies die Leistung nicht beeinträchtigen sollte.

+0

Danke Gerg, wollte nur den Ansatz # 3 von meiner Frage bestätigen (Abschnitt - Was ich ab sofort probiert habe) ist der einzige Weg, in Jface? –

+0

Grundsätzlich ja ist es der einzige Weg. Etikettenanbieter verwenden Sie für Farben. –

Verwandte Themen