如何在通过文本字段过滤时刷新合成?

How to refresh the composite while filtering through text field?

我在一个合成中有一个部分和 formtoolkit。当我在搜索框(Text 字段)中输入一些文本时,它应该根据用户输入进行过滤并在下面显示结果。过滤数据时我遇到了一个问题。当用户在文本字段中输入文本时,如何刷新复合中的数据。

我想要一个与

中相同的解决方案

Preferences -> compiler -> Errors/Warnings?

示例:

如果我在搜索框中输入 "null",它会在下面显示所有相关的 "null" 值。

filtering/refreshing复合数据如何实现这个实现?

您引用的首选项页面使用包含所有要过滤的控件的 Composite 执行此操作。 Composite 使用 GridLayout 布局。

每个控件都有一个GridData布局数据。要将控件设置为可见或不可见,它使用:

control.setVisible(visible);
((GridData)control.getLayoutData()).exclude = !visible;

完成后调用:

composite.layout(true, true);

完全重做 Composite 的布局。

大部分代码在 org.eclipse.jdt.internal.ui.preference.OptionsConfigurationBlock

要进行过滤,您需要为过滤器创建一个 Text 字段并添加一个 ModifyListener 来监听文本中的变化。

每次文本更改时,您都会将每个控件的文本与过滤器匹配,并如上所述将控件设置为可见/不可见。在过滤结束时,您执行 layout 调用。