gpt4 book ai didi

swt - 表在末尾显示额外的空白列

转载 作者:行者123 更新时间:2023-12-04 19:35:36 26 4
gpt4 key购买 nike

我正在使用 jface tableViewer。当表中没有数据时,它会正确显示所有列但是当数据被添加到表中时,它会在表末尾显示额外的空白空间或列。

最佳答案

我正在使用 TreeViewer + TreeViewerColumn 并且也遇到了这个问题,这个解决方法可能也适用于您的 TableViewer:以编程方式设置父级调整大小的最后一列的大小:

    treeViewer.getTree().addControlListener(new ControlAdapter() {
public void controlResized(ControlEvent e) {
packAndFillLastColumn();
}
});

Action 在什么地方

// Resize last column in tree viewer so that it fills the client area completely if extra space.
protected void packAndFillLastColumn() {
Tree tree = treeViewer.getTree();
int columnsWidth = 0;
for (int i = 0; i < tree.getColumnCount() - 1; i++) {
columnsWidth += tree.getColumn(i).getWidth();
}
TreeColumn lastColumn = tree.getColumn(tree.getColumnCount() - 1);
lastColumn.pack();

Rectangle area = tree.getClientArea();

Point preferredSize = tree.computeSize(SWT.DEFAULT, SWT.DEFAULT);
int width = area.width - 2*tree.getBorderWidth();

if (preferredSize.y > area.height + tree.getHeaderHeight()) {
// Subtract the scrollbar width from the total column width
// if a vertical scrollbar will be required
Point vBarSize = tree.getVerticalBar().getSize();
width -= vBarSize.x;
}

// last column is packed, so that is the minimum. If more space is available, add it.
if(lastColumn.getWidth() < width - columnsWidth) {
lastColumn.setWidth(width - columnsWidth);
}
}

对我来说效果很好——你可能想将 column resizable 设置为 false ;-)。当最后一列中的数据更改时(引入/删除垂直滚动条)也可以调用此方法。

关于swt - 表在末尾显示额外的空白列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7803747/

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