gpt4 book ai didi

java - SWT - 当一个 child 被隐藏时收缩复合 Material

转载 作者:行者123 更新时间:2023-12-01 11:14:44 25 4
gpt4 key购买 nike

我有一个与 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();
}
}

最佳答案

创建标签时设置布局数据:

GridData labelLayoutData = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
label.setLayoutData(labelLayoutData);

当您更改标签的可见性时,还设置 GridData exclude 标志:

label.setVisible(!label.getVisible());

labelLayoutData.exclude = !label.isVisible();

最后调用Compositelayout

composite.layout(true, true);

关于java - SWT - 当一个 child 被隐藏时收缩复合 Material ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31972460/

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