gpt4 book ai didi

java - 如何正确避免SWT表扩大?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:23:05 25 4
gpt4 key购买 nike

我有一个像这样的简单 SWT 程序:

public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
shell.setMinimumSize(300, 300);

// table
final Table table = new Table(shell, SWT.BORDER);
final GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
gridData.heightHint = 0; // "hack"
table.setLayoutData(gridData);

// example data
for (int i = 0; i < 50; i++) {
final TableItem item = new TableItem(table, SWT.NONE);
item.setText("item no." + i);
}

shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}

我的期望 - 我希望表格在不改变其大小的情况下完全填满 shell 空间。 (截图 1 和 3)

问题 - 如果我向表中添加行,表会自动调整大小(shell 也会自动调整大小)。 (截图二)

解决方法 - 为了避免这种行为,我在代码中添加了行 gridData.heightHint = 0;。但这对我来说似乎是一个黑客。

问题 - 添加数据时避免表(和 shell)扩大的正确方法是什么?

问候,winklerrr

截图1

没有数据,表和 shell 不会调整大小,正确的行为,在两个版本中
Empty table (correct)

截图2

有了数据,表格和 shell 越来越大,错误的行为,只有 没有 hack
Full table (wrong)

截图3

有了数据,表格和 shell 不会调整大小,添加了滚动条,正确的行为,只有 hack
Full table (correct)

最佳答案

在将数据添加到表格之前的某个时刻调用 shell.setSize(int width, int height)

关于java - 如何正确避免SWT表扩大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36743697/

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