gpt4 book ai didi

java - Control类的moveBelow方法有什么作用?

转载 作者:行者123 更新时间:2023-12-02 05:41:05 25 4
gpt4 key购买 nike

我使用的是 2 列的网格布局。我有标签和相应的文本控件。我希望第一个标签的文本控件滑下标签,而不是紧挨着它(因为它是网格布局)。为此,我认为 moveBelow 方法会起作用,但似乎不起作用。我是否错误地解释了该方法的使用?

Label label = Components.createLabel(myContainer, SWT.LEFT
| SWT.WRAP);
abel.setText("WC Plan Name");
textName = createTextControl(myContainer, SWT.LEFT);
textName.moveBelow(label);

private Text createTextControl(Composite parent, int horizontalAlignment)
{
final Text textControl = Components.createText(parent, SWT.SINGLE | SWT.BORDER);
final GridData layoutData = new GridData(horizontalAlignment, SWT.FILL, false, false);
layoutData.widthHint = 200;
textControl.setLayoutData(layoutData);
return textControl;
}

最佳答案

moveBelow() 完全按照文档中的说明进行操作:

Moves the receiver below the specified control in the drawing order. If the argument is null, then the receiver is moved to the bottom of the drawing order. The control at the bottom of the drawing order will be covered by all other controls which occupy intersecting areas.

这意味着它可用于对子级重新排序(如果父级的布局允许)。例如,如果您有一个 RowLayout 并对最后一个子项调用 moveBelow(null),它将被移动到顶部。

<小时/>

现在解决您的问题:您有一个包含 2 列的 GridLayoutGridLayout 从左上角到右下角填充。如果您希望两个元素显示在彼此下方而不是彼此相邻,有两个选项:

  1. 在两者之间添加一个空的Label,以便它可以占据第一个元素右侧的空间
  2. 向第一个元素添加 GridData 并将 GridData#horizo​​ntalSpan 设置为 2。这样它将跨越两列。
<小时/>

更新

以下是解决方案 2 的示例:

public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new GridLayout(4, false));

Text text = new Text(shell, SWT.BORDER);
text.setLayoutData(new GridData(SWT.BEGINNING, SWT.TOP, false, true, 4, 1));

text = new Text(shell, SWT.BORDER);
text.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true, 4, 1));

for (int i = 0; i < 8; i++)
{
new Button(shell, SWT.PUSH).setText("Button " + i);
}

shell.pack();
shell.open();

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

看起来像这样:

enter image description here

关于java - Control类的moveBelow方法有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515655/

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