Java 突出显示SWT树节点中的特定字符串
我有一个要求,像所有树首先将被加载,树包含4个级别 有一个文本字段,用户可以在其中输入“filterText”并按下搜索按钮 在树中,在四个级别中的任何一个级别中,如果与过滤器文本匹配,则只应使用黄色突出显示特定字符串,而不应突出显示整个节点,并展开其对应的树Java 突出显示SWT树节点中的特定字符串,java,swt,jface,Java,Swt,Jface,我有一个要求,像所有树首先将被加载,树包含4个级别 有一个文本字段,用户可以在其中输入“filterText”并按下搜索按钮 在树中,在四个级别中的任何一个级别中,如果与过滤器文本匹配,则只应使用黄色突出显示特定字符串,而不应突出显示整个节点,并展开其对应的树 不匹配的树节点不应展开。我假设您使用的是TreeViewer 您可以使用StyledCellLabelProvider为标签字符串的各个部分设置不同的样式。DelegatingStyledCellLabelProvider类就是从这个类派
不匹配的树节点不应展开。我假设您使用的是
TreeViewer
您可以使用StyledCellLabelProvider
为标签字符串的各个部分设置不同的样式。DelegatingStyledCellLabelProvider
类就是从这个类派生出来的,目的是让事情变得更简单。使用以下内容设置标签提供程序:
viewer.setLabelProvider(new DelegatingStyledCellLabelProvider(myLabelProvider));
其中myLabelProvider
是一个实现DelegatingStyledCellLabelProvider.IStyledLabelProvider
的类。提供商像往常一样有一个getImage
方法,另外还有:
public StyledString getStyledText(Object element)
它使用样式字符串
,允许您对文本应用不同的样式。比如:
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);
}
}
嗨,格雷格,这并不能解决我的问题。。。借助于Graphic Conext(GC),我们可以实现它吗?这当然是可能的,但您必须创建自己的样式器,显示您的代码。要使用GC,您必须使用
OwnerDrawLabelProvider
。我注意到我错误地使用了StyledText-应该是StyledString