2016-04-21 28 views
0

Ich habe einen TreeViewer wie hier gezeigt: TreeViewer.RowFilter auf JFace TreeViewer

Ich habe ein Textfeld, um die Prozentwerte einzugeben. Angenommen, der eingegebene Prozentsatz beträgt 30%. Ich sollte alle Zeilen ausblenden, die unter 30% liegen und nur die Zeilen über 30% anzeigen. Gibt es einen Zeilenfilter, den ich für meinen TreeViewer verwenden kann? Es wäre großartig, wenn einige Beispiele bereitgestellt werden.

Ich verwende e4 RCP. Ich möchte View-basierte Filterung durchführen und möchte das Modell nicht ändern.

Antwort

2

Sie verwenden eine Klasse, die ViewFilter erweitert, um die Zeilen in einem Baum-Viewer zu filtern. Die wichtigste Methode in den ViewFilter außer Kraft zu setzen ist die select Methode:

@Override 
public boolean select(Viewer viewer, Object parentElement, Object element) 

hier das Objekt gegeben angesehen wird (element) zusammen mit seinen Eltern und dem Betrachter. Sie geben true zurück, um das Element anzuzeigen, und false, um es auszublenden.

Sie aktiv mehrere Filter haben können, wenn erforderlich, stellen Sie sie in den Baum-Viewer:

treeViewer.setFilters(array of view filters); 

Sie müssen möglicherweise

treeViewer.filter(); 

rufen, wenn etwas in den Baum ändert, die die Filter erfordert erneut ausgeführt werden.

+0

Ja, das hat funktioniert. Ich habe auch ein anderes Problem, das ich als separate Frage beschrieben habe. [Link] (http://stackoverflow.com/questions/36745388/java-swt-how-can-i-make-only-one-column-editable- In-Baumviewer-based-on-checkb/36750182 # 36750182). Ich muss mindestens einen Wert aus jeder Gruppe mit der Checkbox auswählen und nur die entsprechende Zeile sollte editierbar sein. Können Sie mir bitte vorschlagen, wie es geht? – anjalli