gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:02:15 25 4
gpt4 key购买 nike

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

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

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

示例:

public void example(){
createGlazedListsGridLayer();
autoResizeColumns();
nattable.configure();
}

public GlazedListsGridLayer createGlazedListsGridLayer(){
SortedList<T> sortedList = new SortedList<>(eventList, null);
this.bodyDataProvider = new ListDataProvider<>(sortedList,
columnPropertyAccessor);
this.bodyDataLayer = new DataLayer(this.bodyDataProvider);
ColumnHideShowLayer columnHideShowLayer = new
ColumnHideShowLayer(bodyDataLayer);

// In this example, hide the first column
columnHideShowLayer.hideColumnPositions(Lists.newArrayList(0));
this.bodyLayerStack = new DefaultBodyLayerStack(new
GlazedListsEventLayer<>(columnHideShowLayer, eventList));

//...etc
}

protected void autoResizeColumns() {
glazedListsGridLayer.getBodyDataLayer().setColumnPercentageSizing(true);
nattable.addConfiguration(new DefaultNatTableStyleConfiguration() {
{
cellPainter = new LineBorderDecorator(new TextPainter(false,
true, 5, true));
}
});
}

更新

这并不理想,但这是我能达到的最接近的结果

public void adjustColumnWidth() {
getBodyDataLayer().setColumnPercentageSizing(false);
// Avoid the first column since it's hidden
for (int x = 1; x <= numColumns; x++) {
getBodyDataLayer().setColumnWidthByPosition(x,
getParent().getSize().x / numColumns, true);
}
}

更新2

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

protected void enableAutoResizeColumns() {
getBodyDataLayer().setColumnPercentageSizing(true);
getBodyDataLayer().setDefaultColumnWidthByPosition(0, 0);
getBodyDataLayer().setColumnWidthByPosition(0, 0);
getBodyDataLayer().setColumnWidthPercentageByPosition(0, 0);
getNatTable().addConfiguration(new
DefaultNatTableStyleConfiguration() {
{
cellPainter = new LineBorderDecorator(new TextPainter
(false, true, 5, true));
}
});
}

最佳答案

目前尚无解决方案。原因是列宽是在 DataLayer 中计算的。 ColumnHideShowLayer 位于其顶部,只是隐藏列。它不会向 DataLayer 传达某些内容被隐藏的信息。

最后,ColumnHideShowLayer 需要根据隐藏状态重新触发百分比大小计算。但目前还没有相应的 API。

如果您知道如何解决该问题,请随意创建增强票证并提供补丁。

关于java - NatTable - 隐藏列的百分比大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40725326/

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