问题标签 [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 中的行颜色
我正在尝试根据行条件更改背景行颜色。我非常接近,但有些事情我无法完全理解。(我相信这是因为我从底层列表中提取对象而不是动态获取数据。我在下面标记了这部分代码)
在下面的示例中,每行颜色都基于具有成功或失败值的对象 (MyObj)。如果 myObj 具有成功值,则该行应为绿色。如果 myObj 具有失败值,则该行应为红色。如果 myObj 没有值,则应使用默认行颜色。
当我运行代码时,行颜色按预期显示。但是,如果我对列进行排序,则原始行索引会在数据移动到新行索引时保持该颜色。我希望行颜色会随对象移动,而不是始终固定在该行索引处。
如果我按字母顺序对该列进行排序,我会得到:
下面是我用来生成示例的代码片段:
java - NatTable-设置动态列宽
我想让 NatTable 的列动态扩展到
- 显示单元格中的整个值
- 完全填充父复合
似乎我可以做一个或另一个,但不能两者兼而有之。换句话说,如果我有一个大的父 Composite 并且 NatTable 只有几列具有非常短的值,我将有很多空白空间(也就是 NatTable 与父 Composites 宽度相比将有一个小宽度)
我尝试了以下代码片段:
我想我正在寻找一种混合,其中列将根据值自动调整大小。如果表格没有填满复合材料的宽度,我想要:
- 所有列均匀地增加额外的宽度,直到表格与 Composite 父级或
- 特定列将添加额外的宽度,直到表格与复合父级的大小相同
如果表格填充了 Composite 的整个宽度并且列值很长,我想确保表格有一个水平滚动条(必要时)以查看所有列及其未截断的值
有没有人知道如何实现这一目标?谢谢!
java - 更改 NatTable 中选定的行颜色
如何更改默认行选择颜色?我在下面的代码片段中看不到从哪里访问它:
nattable - 如何在 NatTable 中处理大量数据的选择
当使用带有选择层的 NatTable 时,如果我有大量(100 万+)列数据,选择一行将花费非常长的时间(20 秒+),否则我的应用程序将彻底崩溃。有没有更好的方法来处理大量数据的选择,或者可能是一种选择全部数据的方法,但只在视觉上显示显示为选中的列的数量,并在表格滚动时更新它?
java - NatTable 是否需要在 repaintCell 后手动刷新?
我有以下代码片段。
当我运行上面显示的代码时,只有在我单击 GUI 中显示的表格后才会重新绘制受影响的单元格。如果我注释掉该代码并使用getNatTable().refresh();
它重新绘制而无需我首先单击表格。
有没有一种方法可以重新绘制单元格而无需单击 GUI 中显示的表格?我讨厌不得不为一个可能多次执行此代码的大表调用 refresh() 。
nattable - 如何将 NatTable 锁定到左侧
我如何能够锁定左侧的 NatTable 以使其看起来好像数据在列中移动,而不是列在视图中移动?这也将解决在左侧截断列的问题。
java - 将图像和背景添加到 NatTable 行
我已阅读以下文档:https ://eclipse.org/nattable/documentation.php?page=styling
我很好奇是否有任何简单的方法可以使用单独的配置添加背景行颜色和图像。我不希望像 CellPainterWrapper 示例那样将它们组合成 1 个配置,因为我想将两者之间的逻辑分开。我当前的代码适用于图像或背景颜色,但我不能同时使用两者(最顶层的配置会覆盖最底层的配置)。下面是我的片段:
更新
我最终做了类似于以下的事情来使它工作:
java - 更改 NatTable 单元格选择颜色
当我单击一行时,整个行的颜色会按预期变化。但是,鼠标所在的单元格会变为与行的其余部分不同的颜色。我试图防止单元格更改为与行的其余部分不同的颜色。
我试图弄清楚单元格选择颜色的设置位置以及如何删除它(让单元格选择使用单元格当前背景颜色)。
我没有成功地尝试过修改 CellConfigAttribute 或通过以下方式取消注册它:
但没有运气。我不知道如何按顺序迭代所有样式并查看它是从哪里生成的。我希望看到类似于以下的现有方法:
不幸的是,我看到的都是这样的,我觉得这对我的情况没有用:
我已经阅读了包含一些一般建议的文档,但没有看到显示如何执行此操作的明确代码示例。那么,显示我是否确定单元格被修改的位置以及如何防止它?
我用于完整行选择的代码是:
filter - Nebula NatTable 持久化状态
我们在其中一个应用程序中使用了 NatTable。nat 表用于从 XML 文件加载内容,并实现了排序和过滤功能。我在 Nat 表http://www.eclipse.org/nattable/documentation.php?page=persistence中阅读了一篇关于持久性的文章。
这个主题对我来说是新的,所以我无法成功更改我们的实现以在关闭表时保存过滤器行状态,并在稍后再次加载表时加载过滤器行状态(如之前保存的)。你能告诉我这个操作要遵循的步骤吗?我提到了 PersistentNatExample。
我们的应用程序中有一个类扩展了 FilterRowHeaderComposite。我已经覆盖了此类中的 saveState() 方法以将属性对象存储到文件系统。当我调试代码并到达 FilterRowDataProvider 类中的 saveState() 方法时,“filterIndexToObjectMap”对象为空。我怀疑这就是为什么过滤器状态没有按预期保存和加载的原因。我错过了什么吗?
java - CTabItem 内的 NatTable 宽度
我有一个 CTabFolder,它有很多 CTabItems。每个 CTabItem 都有一个不同的 NatTable 作为其控件。创建每个 NatTable 时,它都有列标题但没有行。当我单击“填充数据”按钮时,它将用数据填充每个表。
如果我在单击“填充数据”按钮之前查看每个选项卡,我将按预期看到列标题。然后我可以按下按钮并查看所有表格中正确填充的所有数据。
如果在单击“填充数据”按钮之前未查看选项卡,我将看不到任何列标题或数据(对于我之前未查看的选项卡)。这是因为该选项卡中的 NatTable 的宽度为 0。
我不想在单击“填充数据”按钮之前单击每个选项卡。当不集中注意事项时,在内部进行的呼叫(我可能必须手动打电话)正确设置可naterable的宽度。
以下是我的代码示例: