我有一个GridLayout复合。在第一行只有一些文字。在第二行有一个按钮。如果我按下按钮,我将第一行的文字设置为不可见,但一切都保持不变。我如何“缩小”复合材料,以便隐藏文本下方的所有内容都可以取而代之?
这是我到目前为止所得到的:
public class Main {
public static void main(String[] args) {
Display display = Display.getDefault();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Composite composite = new Composite(shell, SWT.BORDER);
composite.setLayout(new GridLayout());
final Label label = new Label(composite, SWT.BORDER);
label.setText("Just some text");
Button b1 = new Button(composite, SWT.PUSH);
b1.setText("Button1");
b1.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
switch (e.type) {
case SWT.Selection:
label.setVisible(!label.getVisible());
break;
}
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
答案 0 :(得分:1)
创建标签时设置布局数据:
GridData labelLayoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
label.setLayoutData(labelLayoutData);
当您更改标签的可见性时,还要设置GridData
exclude
标记:
label.setVisible(!label.getVisible());
labelLayoutData.exclude = !label.isVisible();
最后致电layout
Composite
composite.layout(true, true);