我有一个要求,首先要加载树,树包含 4 个级别。
有一个文本字段,用户可以在其中输入“filterText”,然后可以按搜索按钮。
在树中,在四个级别中的任何一个中,如果与过滤器文本匹配,则该特定字符串仅应以黄色突出显示,而不是整个节点及其相应的树将被展开。
不匹配的树节点不应扩展。
我假设你正在使用TreeViewer
.
您可以使用StyledCellLabelProvider
为标签字符串的各个部分设置不同的样式。这DelegatingStyledCellLabelProvider
类是从该类派生的,以使事情变得更容易一些。使用以下命令设置标签提供程序:
viewer.setLabelProvider(new DelegatingStyledCellLabelProvider(myLabelProvider));
where 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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)