【发布时间】:2016-08-13 03:01:03
【问题描述】:
我有一个像这样的简单 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();
}
我的期望 - 我希望表格完全填满贝壳空间而不改变它的大小。 (截图 1 和 3)
问题 - 如果我在表格中添加行,表格会自动调整大小(外壳也是如此)。 (截图二)
解决方法 - 为了避免这种行为,我在代码中添加了 gridData.heightHint = 0; 行。但这对我来说似乎是一个黑客行为。
问题 - 添加数据时避免表格(和外壳)扩大的正确方法是什么?
问候,winklerrr
截图 1
在两个版本中,如果没有数据,表格和外壳都不会调整大小,行为正确
截图 2
截图 3
【问题讨论】:
-
你能发一个MCVE来说明你的问题吗?
-
@Baz 你错过了什么?
-
当我尝试时它在这里工作正常,但正如第一个答案所说,你打电话给
shell.setSize()了吗?如果您发布 MCVE,我们就会知道。 -
我会说 heightHint 没问题。您可以指定一个正数来强制表格为固定大小。
-
@Baz 我更新了帖子,希望现在更好