1

我创建TreeViewerPatternFilter

PatternFilter patternFilter = new PatternFilter();
FilteredTree filter = new FilteredTree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL, patternFilter, true);
treeViewer = filter.getViewer();

treeViewer.setContentProvider(new TreeContentProvider());
treeViewer.setLabelProvider(new TreeLabelProvider());
treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
treeViewer.setInput(Activator.getDefault().getTreeModel());

Tree tree = treeViewer.getTree();

如何在过滤器的文本结果中添加粗体文本?

就像 Eclipse 中首选项对话框中的过滤器一样

4

1 回答 1

1

Eclipse Preferences 使用相同的FilteredTree. 知道了这一点,从这里就很容易了。

快速浏览FilteredTree, 和CTRL+F文本bold

第一个结果是这种方法:

/**
 * Return a bold font if the given element matches the given pattern.
 * Clients can opt to call this method from a Viewer's label provider to get
 * a bold font for which to highlight the given element in the tree.
 * 
 * @param element
 *            element for which a match should be determined
 * @param tree
 *            FilteredTree in which the element resides
 * @param filter
 *            PatternFilter which determines a match
 * 
 * @return bold font
 */
public static Font getBoldFont(Object element, FilteredTree tree, PatternFilter filter) 

如果我们搜索它的使用位置,我们会找到org.eclipse.ui.internal.dialogs.PreferenceBoldLabelProvider.

在您的标签提供商中使用相同的技巧。


编辑 1:正如greg-449所说,我希望你有足够的经验知道不要使用内部类,而是模仿它们并通过扩展来创建你自己的类LabelProvider(在这种情况下)。

于 2013-11-14T15:45:57.747 回答