问题标签 [nattable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用自定义比较器进行 NatTable 排序
我正在查看 (509_SortHeaderLayer.java) 示例作为参考点。
我将自定义比较器直接添加到 SortedList,如下例所示。但是,当我单击调试器中的列时,我的自定义比较器永远不会到达我在 compare() 方法的第一行中设置的断点。
如果我将比较器添加为 AbstractRegistryConfiguration 它按预期工作(当我单击列时到达断点)。
为什么在 SortedLists 构造函数中设置比较器不能按预期工作?一些通用代码片段如下所示:
java - NatTable - 具有列隐藏的百分比大小
我想使用列百分比大小来强制表格采用父级的宽度。
这在我默认隐藏列时不起作用,因为 setColumnPercentageSizing() 方法似乎没有排除隐藏列并且没有正确计算宽度。
有没有一种简单的方法可以在我的代码中进行调整?
例子:
更新
这并不理想,但这是我能做到的最接近的
更新 2
以下是我尝试过的几种不同组合。在用数据动态填充表后,它们似乎都没有隐藏该列。
nattable - NatTable - 排序时的奇怪行为
我有一个基于 http://www.eclipse.org/nattable/documentation.php?page=sorting 和示例 6031_GlazedListsFilterExample.java 的具有排序/过滤功能的 nattable
最初我的表有零行。
场景一:
- 我查看包含没有行的 NatTable 的 CTabItem。
- 如果我然后填充行并单击列标题,则没有任何反应(排序似乎已禁用)。
场景二:
- 我没有查看包含没有行的 NatTable 的 CTabItem。
- 然后我填充行
- 然后,我查看包含现在有行的 NatTable 的 CTabItem。
- 我单击列标题,一切都按预期排序(排序似乎已启用)
场景 3:
- 我没有查看包含没有行的 NatTable 的 CTabItem。
- 然后我填充行
- 然后,我查看包含现在有行的 NatTable 的 CTabItem。
- 然后我删除所有行数据
- 我单击列标题,一切都按预期排序(排序似乎已启用)。* 即使没有行,我仍然会在列标题单元格中看到向上/向下图标
在 NatTable 的初始“视图”之后,列标题操作没有“更新”是否有原因?换句话说,在第一次查看 NatTable 之后,无论行是否更改,它似乎都考虑了行的存在/不存在。
相关代码部分如下所示:
nattable - 带有分组依据的 nattable 组合框过滤器标题
我正在尝试使用“ComboBoxFilterRowHeaderComposite”实现 nattable。
过滤工作正常,但是当我尝试分组时过滤行后,它会引发以下异常
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.remove(ArrayList.java:492)
at ca.odell.glazedlists.FunctionList.listChanged(FunctionList.java:283)
at ca.odell.glazedlists.event.ListEventAssembler$ListEventFormat.fire(ListEventAssembler.java:424)
at ca.odell.glazedlists.event.ListEventAssembler$ListEventFormat.fire(ListEventAssembler.java:421)
at ca.odell.glazedlists.event.SequenceDependenciesEventPublisher$SubjectAndListener.firePendingEvent(SequenceDependenciesEventPublisher.java:445)
at ca.odell.glazedlists.event.SequenceDependenciesEventPublisher.fireEvent(SequenceDependenciesEventPublisher.java:344)
at ca.odell.glazedlists.event.ListEventAssembler.commitEvent(ListEventAssembler.java:317)
at ca.odell.glazedlists.TransformedList.clear(TransformedList.java:98)
at org.eclipse.nebula.widgets.nattable.extension.glazedlists.groupBy.GroupByDataLayer$1.run(GroupByDataLayer.java:286)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.nebula.widgets.nattable.extension.glazedlists.groupBy.GroupByDataLayer.updateTree(GroupByDataLayer.java:272)
at org.eclipse.nebula.widgets.nattable.extension.glazedlists.groupBy.GroupByDataLayer.update(GroupByDataLayer.java:313)
at java.util.Observable.notifyObservers(Observable.java:159)
at java.util.Observable.notifyObservers(Observable.java:115)
at org.eclipse.nebula.widgets.nattable.extension.glazedlists.groupBy.GroupByModel.update(GroupByModel.java:124)
at org.eclipse.nebula.widgets.nattable.extension.glazedlists.groupBy.GroupByModel.addGroupByColumnIndex(GroupByModel.java:44)
这是我的 ComboBoxFilterRowHeaderComposite 结构:
filterRowHeaderLayer = new ComboBoxFilterRowHeaderComposite<T>(
bodyLayerStack.getFilterList(),
bodyLayerStack.getGlazedListsEventLayer(), bodyLayerStack.getSortedList(),
columnAccessor, columnHeaderLayer, dataProvider, configRegistry);
在哪里,
columnAccessor = new ReflectiveColumnPropertyAccessor(propertyNames);
columnGroupHeaderLayer = new DynamicColumnGroupHeaderLayer(sortHeaderLayerStack, bodyLayerStack.getSelectionLayer(), bodyLayerStack.getColumnGroupModel(), tr);
DataProvider 是 com.vanguard.tip.epm.platform.ui.grid.next.DynamicColumnHeaderDataProvider;
在那之后
CornerLayerStack cornerLayerStack = new CornerLayerStack(rowHeaderLayerStack, filterRowHeaderLayer);
CompositeLayer gridLayer = new GridLayer(bodyLayerStack, filterRowHeaderLayer, rowHeaderLayerStack, cornerLayerStack);
然后在 GroupByHeaderLayer 中添加 gridLayer:
groupByHeaderLayer = new GroupByHeaderLayer(bodyLayerStack.getGroupByModel(), gridLayer, columnHeaderLayerStack.getDataProvider(),
new GroupByHeaderConfigurationWrapper(bodyLayerStack.getGroupByModel(), columnHeaderLayerStack.getDataProvider(), bodyLayerStack.getColumnGroupModel()));
CompositeLayer groupByComposite = new CompositeLayer(1, 2);
groupByComposite.setChildLayer(GroupByHeaderLayer.GROUP_BY_REGION, groupByHeaderLayer, 0, 0);
groupByComposite.setChildLayer("Grid", gridLayer, 0, 1);
我希望这能让您清楚地了解我对 Nattable 的使用。
当我使用具有相同结构的文本库过滤器时,分组工作正常:
filterStrategy = new DefaultGlazedListsFilterStrategy<T>(bodyLayerStack.getFilterList(), columnAccessor, configRegistry);
this.filterRowHeaderLayer = new FilterRowHeaderComposite<T>(filterStrategy, columnHeaderLayer, dataProvider, configRegistry);
如果您需要更多信息,请与我们联系。
java - NatTable 过滤
我正在尝试同时对 NatTable 应用两种不同类型的过滤。每个过滤器本身都可以正常工作,但是当它们组合在一起时,它们并没有像我预期的那样工作。
- 我要做的第一件事是调用 FilterList.setMatcher() 以根据外部条件减少行数
- 我接下来要做的是使用 FilterRowHeaderComposite 应用进一步过滤,但它似乎忽略了输入(即使我在过滤器标题单元格中看到输入/图标)并且没有应用过滤器
下面是一些基本的代码片段,显示了我的设置......
任何帮助,将不胜感激。谢谢!
nattable - NatTable - 显示过滤计数
我有一个 FilterRowHeaderComposite 层,用户可以在其中输入过滤器来过滤显示的行。我还显示了当前显示的行数。
我想知道当有人输入过滤器并且行数发生变化时,最好的方法是更新显示的行数。是否会捕获某些特定事件、扩展 FilterRowHeaderComposite 并触发某些事件等?
谢谢!
更新:这就是我在德克斯发表评论后最终做的事情
nattable - NatTable - 最新行优先
是否可以在 NatTable 中设置默认标志以允许最新添加的行出现在表格顶部?还是我只是直接将行添加到由 EventList 维护的 backingList 的开头?还是将其添加到 sortedList/filterList 层?还是有另一种首选方式?
nattable - Nattable IColumnAccessor ClassNotFound
我尝试使用 Vogella 教程中提到的简单 Nattable,但出现以下错误:
我正在开发一个插件应用程序并使用 Luna 4.4.2,任何可以帮助我的人,我都添加了所有 jar 来构建路径,甚至类是可见的。
eclipse-rcp - 如何将子菜单添加到 Nattable 的上下文菜单中?
我在我的应用程序中使用 Nattable。我已经建立了一个上下文菜单,右键单击 nattable 中的任何行会弹出。现在我想为上下文菜单中的一个菜单项添加子菜单项。是否可以在 Nattable 的上下文菜单中添加子菜单?
这就是我构建上下文菜单的方式,使用 PopupMenuBuilder 类创建上下文菜单并通过扩展 AbstractUiBindingConfiguration 类将上下文菜单绑定到 Nattable。
提前致谢!:)
java - 删除 Nattable 中的行号
我在我的应用程序中将 Nattable 用于几个不同的表。现在我需要找到一种方法来删除第一列中的行号。有什么方法可以隐藏/删除表格中的行号吗?
我绘制表格的来源是: