特定字符串我想首先樹的要求,將被裝載,樹包含4個級別。突出顯示SWT樹節點
有一個文本框,在這裏用戶可以輸入「filterText」,他可以按下搜索按鈕。
在樹中,任何四級如果沒有與過濾文本匹配,則只有特定的字符串,則應該用黃顏色,但不是整個節點強調了其相應的樹將擴大。
無與倫比的樹節點不應該擴大。
特定字符串我想首先樹的要求,將被裝載,樹包含4個級別。突出顯示SWT樹節點
有一個文本框,在這裏用戶可以輸入「filterText」,他可以按下搜索按鈕。
在樹中,任何四級如果沒有與過濾文本匹配,則只有特定的字符串,則應該用黃顏色,但不是整個節點強調了其相應的樹將擴大。
無與倫比的樹節點不應該擴大。
我假設你正在使用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);
}
}
嗨格雷格,它沒有解決我的問題...... 用圖形Conext(GC),我們可以acheive它的幫助? – 2014-10-06 09:15:58
這絕對是可能的,但你將不得不創建你自己的Styler,顯示你的代碼。要使用GC,你必須使用'OwnerDrawLabelProvider'。 – 2014-10-06 09:20:12
我注意到我錯誤地使用了StyledText - 應該是StyledString – 2014-10-06 09:22:20