2014-10-03 66 views
2

特定字符串我想首先樹的要求,將被裝載,樹包含4個級別。突出顯示SWT樹節點

有一個文本框,在這裏用戶可以輸入「filterText」,他可以按下搜索按鈕。

在樹中,任何四級如果沒有與過濾文本匹配,則只有特定的字符串,則應該用黃顏色,但不是整個節點強調了其相應的樹將擴大。

無與倫比的樹節點不應該擴大。

回答

4

我假設你正在使用TreeViewer

可以使用StyledCellLabelProvider爲標籤字符串的部分設置不同的風格。 DelegatingStyledCellLabelProvider類是從這個類派生出來的,使事情變得更簡單。設置使用標籤供應商:

viewer.setLabelProvider(new DelegatingStyledCellLabelProvider(myLabelProvider)); 

其中myLabelProvider是實現DelegatingStyledCellLabelProvider.IStyledLabelProvider類。該供應商擁有getImage方法像往常一樣加:

public StyledString getStyledText(Object element) 

它採用了StyledString它允許你不同的樣式應用到文本。喜歡的東西:

StyledString text = new StyledString(); 

text.append("unstyled text"); 

text.append("styled text with decorations style", StyledString.DECORATIONS_STYLER); 

以及預定義StyledString.Styler值,您可以定義自己。 DefaultStyler類允許您使用JFace顏色註冊表中定義的顏色。

一個簡單版本的樣式器的設置背景顏色爲黃色是:

class HighlightStyler extends Styler 
{ 
    @Override 
    public void applyStyles(final TextStyle textStyle) 
    { 
    textStyle.background = Display.getDefault().getSystemColor(SWT.COLOR_YELLOW); 
    } 
} 
+0

嗨格雷格,它沒有解決我的問題...... 用圖形Conext(GC),我們可以acheive它的幫助? – 2014-10-06 09:15:58

+0

這絕對是可能的,但你將不得不創建你自己的Styler,顯示你的代碼。要使用GC,你必須使用'OwnerDrawLabelProvider'。 – 2014-10-06 09:20:12

+0

我注意到我錯誤地使用了StyledText - 應該是StyledString – 2014-10-06 09:22:20

相關問題