gpt4 book ai didi

java - 使用自定义比较器进行 NatTable 排序

转载 作者:行者123 更新时间:2023-12-01 09:14:36 27 4
gpt4 key购买 nike

我正在查看 (509_SortHeaderLayer.java) 示例作为引用点。

我将自定义比较器直接添加到 SortedList 中,如下例所示。但是,当我单击调试器中的列时,我的自定义比较器永远不会到达我在 Compare() 方法的第一行中设置的断点。

如果我将比较器添加为 AbstractRegistryConfiguration,它将按预期工作(当我单击列时到达断点)。

为什么在 SortedLists 构造函数中设置比较器不能按我的预期工作?一些通用代码片段如下所示:

public void setSortComparatorWorks() {
SortedList<T> sortedList = new SortedList<>(eventList, null);
init(sortedList);
getNatTable().addConfiguration(new AbstractRegistryConfiguration() {

@Override
public void configureRegistry(IConfigRegistry configRegistry) {
configRegistry.registerConfigAttribute(SortConfigAttributes.
SORT_COMPARATOR, new MyComparator<T>(),
DisplayMode.NORMAL);
}
});
getNatTable().configure();
}

public void setSortComparatorDoesntWork() {
SortedList<T> sortedList = new SortedList<>(eventList,
new MyComparator<T>);
init(sortedList);
getNatTable().configure();
}

private void init(SortedList sortedList){
this.bodyDataProvider = new ListDataProvider<>(sortedList,
columnPropertyAccessor);

this.bodyDataLayer = new DataLayer(this.bodyDataProvider);

this.bodyLayerStack = new DefaultBodyLayerStack(new
GlazedListsEventLayer<>(this.bodyDataLayer, eventList));

this.columnHeaderLayerStack = new
GlazedListsColumnHeaderLayerStack<>(
columnHeaderDataProvider, sortedList,
columnPropertyAccessor, configRegistry, this.bodyLayerStack);

this.sortHeaderLayer = new SortHeaderLayer<>(columnHeaderLayerStack,
new GlazedListsSortModel<T>(sortedList,
columnPropertyAccessor, configRegistry, bodyDataLayer),
false);

setChildLayer(GridRegion.COLUMN_HEADER, sortHeaderLayer, 0, 0);
setChildLayer(GridRegion.BODY, bodyLayerStack, 0, 1);

getNatTable().addConfiguration(new SingleClickSortConfiguration());
}

最佳答案

它不会按您的预期工作,因为内部函数将用派生的 Comparator 替换 SortedList 上的任何现有 Comparator超出 ConfigRegistry 和当前应用的排序状态。

顺便说一句,有趣的是,您引用了 _509_SortHeaderLayerExample,而 GlazedLists 的示例是 _602_GlazedListsSortingExample

关于java - 使用自定义比较器进行 NatTable 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40658577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com