【发布时间】:2015-12-26 06:49:56
【问题描述】:
我正在使用 FilteredTree 类来过滤我的 TreeViewer 内容,但是由于现在有很多数据,当我输入一些内容来过滤数据时,它会在我输入下一个字母之前挂起。有什么方法可以提高性能。
【问题讨论】:
标签: java eclipse swt rcp treeviewer
我正在使用 FilteredTree 类来过滤我的 TreeViewer 内容,但是由于现在有很多数据,当我输入一些内容来过滤数据时,它会在我输入下一个字母之前挂起。有什么方法可以提高性能。
【问题讨论】:
标签: java eclipse swt rcp treeviewer
缓解慢速过滤器的一种方法是增加运行过滤器之间的延迟。这允许用户在重新运行过滤器之前键入多个字符。
在 FilteredTree 的子类中,覆盖 getRefreshJobDelay()。默认值为 200 毫秒,也许允许 500-800 毫秒更适合您的用例?
例如考虑Eclipse PDE of a filtered tree中的用例:
@Override
protected long getRefreshJobDelay() {
// Prolonged job delay time is required because of the attribute search being more costly in nature.
// This can block input to the filter text severely. Thus it shouldn't happen when typing slowly.
// The delay of 1500ms is bypassed by some actions that use the filter text to initiate searches or clear the text.
long delay = (fBypassFilterDelay) ? 0 : REFRESHJOB_DELAY_TIME;
setBypassFilterDelay(false); // reset afterwards
return delay;
}
REFRESHJOB_DELAY_TIME 是 1200 毫秒。
如果您希望加快您的过滤器实施速度,或许发布它会有所帮助?
【讨论】: