问题标签 [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.

0 投票
1 回答
227 浏览

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

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

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

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

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

0 投票
1 回答
142 浏览

java - NatTable - 具有列隐藏的百分比大小

我想使用列百分比大小来强制表格采用父级的宽度。

这在我默认隐藏列时不起作用,因为 setColumnPercentageSizing() 方法似乎没有排除隐藏列并且没有正确计算宽度。

有没有一种简单的方法可以在我的代码中进行调整?

例子:

更新

这并不理想,但这是我能做到的最接近的

更新 2

以下是我尝试过的几种不同组合。在用数据动态填充表后,它们似乎都没有隐藏该列。

0 投票
1 回答
201 浏览

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 之后,无论行是否更改,它似乎都考虑了行的存在/不存在。

相关代码部分如下所示:

0 投票
1 回答
323 浏览

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);

如果您需要更多信息,请与我们联系。

0 投票
1 回答
991 浏览

java - NatTable 过滤

我正在尝试同时对 NatTable 应用两种不同类型的过滤。每个过滤器本身都可以正常工作,但是当它们组合在一起时,它们并没有像我预期的那样工作。

  • 我要做的第一件事是调用 FilterList.setMatcher() 以根据外部条件减少行数
  • 我接下来要做的是使用 FilterRowHeaderComposite 应用进一步过滤,但它似乎忽略了输入(即使我在过滤器标题单元格中看到输入/图标)并且没有应用过滤器

下面是一些基本的代码片段,显示了我的设置......

任何帮助,将不胜感激。谢谢!

0 投票
1 回答
96 浏览

nattable - NatTable - 显示过滤计数

我有一个 FilterRowHeaderComposite 层,用户可以在其中输入过滤器来过滤显示的行。我还显示了当前显示的行数。

我想知道当有人输入过滤器并且行数发生变化时,最好的方法是更新显示的行数。是否会捕获某些特定事件、扩展 FilterRowHeaderComposite 并触发某些事件等?

谢谢!

更新:这就是我在德克斯发表评论后最终做的事情

0 投票
1 回答
27 浏览

nattable - NatTable - 最新行优先

是否可以在 NatTable 中设置默认标志以允许最新添加的行出现在表格顶部?还是我只是直接将行添加到由 EventList 维护的 backingList 的开头?还是将其添加到 sortedList/filterList 层?还是有另一种首选方式?

0 投票
1 回答
48 浏览

nattable - Nattable IColumnAccessor ClassNotFound

我尝试使用 Vogella 教程中提到的简单 Nattable,但出现以下错误:

我正在开发一个插件应用程序并使用 Luna 4.4.2,任何可以帮助我的人,我都添加了所有 jar 来构建路径,甚至类是可见的。

0 投票
1 回答
173 浏览

eclipse-rcp - 如何将子菜单添加到 Nattable 的上下文菜单中?

我在我的应用程序中使用 Nattable。我已经建立了一个上下文菜单,右键单击 nattable 中的任何行会弹出。现在我想为上下文菜单中的一个菜单项添加子菜单项。是否可以在 Nattable 的上下文菜单中添加子菜单?

这就是我构建上下文菜单的方式,使用 PopupMenuBuilder 类创建上下文菜单并通过扩展 AbstractUiBindingConfiguration 类将上下文菜单绑定到 Nattable。

提前致谢!:)

0 投票
1 回答
455 浏览

java - 删除 Nattable 中的行号

我在我的应用程序中将 Nattable 用于几个不同的表。现在我需要找到一种方法来删除第一列中的行号。有什么方法可以隐藏/删除表格中的行号吗?

我绘制表格的来源是: