【发布时间】:2017-08-07 04:26:16
【问题描述】:
在应用程序中有一个包含 Nattable 的视图。
在该表中,当我使用过滤器搜索字符串并且只剩下一行时,如果您随后更改列宽,所有列都会更改宽度。
我在其中一个论坛中阅读它,因为选择了该行,因此所有列都将调整大小。
请告诉我如何解决它。
谢谢。
【问题讨论】:
标签: java eclipse-plugin eclipse-rcp nattable
在应用程序中有一个包含 Nattable 的视图。
在该表中,当我使用过滤器搜索字符串并且只剩下一行时,如果您随后更改列宽,所有列都会更改宽度。
我在其中一个论坛中阅读它,因为选择了该行,因此所有列都将调整大小。
请告诉我如何解决它。
谢谢。
【问题讨论】:
标签: java eclipse-plugin eclipse-rcp nattable
第一个问题,如果您在 NatTable 论坛上阅读过有关此主题的信息,为什么您会在 Stackoverflow 上提出问题而不是写信给论坛?
第二个问题,为什么选择行?我不知道有任何功能会在过滤时选择一行。
我认为调整所有选定列的大小是一种常见行为,如果您只有一行并且选择了该行,则意味着所有列都已完全选中。所以恕我直言,这是正确的行为。改变这一点的唯一方法是覆盖 SelectionLayer#handleColumnResizeCommand 以禁用多列调整大小功能。目前没有修改该行为的选项。
您还可以打开增强票证以获取 NatTable 中包含的此类选项并提供补丁。
【讨论】:
我发现 Dirk 的答案不是很有效。
我认为 body-rows/cells 的选择与标题区域的选择无关。选择所有列(假设通过选择带有标题矩形的列)与选择数据行完全不同。
但是,我找到了一个快速修复,它可以非常轻松地关闭所有多重隐藏、-resize 和 -clear 功能。这可能有点脏,但它首先帮助了我:
class MySelectionLayer extends SelectionLayer {
public MySelectionLayer(IUniqueIndexLayer underlyingLayer) {
super(underlyingLayer);
}
@Override
public boolean isColumnPositionFullySelected(int columnPosition) {
return false;
}
}
【讨论】: