gpt4 book ai didi

java - swt中使用FormLayout输入表单

转载 作者:行者123 更新时间:2023-12-01 15:01:24 26 4
gpt4 key购买 nike

我是 swt 新手,我正在尝试在窗口中创建布局。每个文本字段的左侧都会有一个标签 - 但在某些情况下,每个标签可能有两个文本字段,也许稍后会添加单选按钮。表单布局是执行此操作的最佳方法吗?在我看来,这似乎不必要地过于复杂。我没有 windowbuilder 或可视化设计器实用程序,并且发现 FormAttachment 方法很难处理。任何建议表示赞赏。我附上了我尝试创建的基本 GUI 设计的屏幕截图。

不幸的是,我暂时不允许上传图像,因为我是新用户。基本上我想要的结构是这样的:

LABEL TEXTBOX
LABEL TEXTBOX TEXTBOX
LABEL TEXTBOX
LABEL TEXTBOX TEXTBOX
LABEL CALENDAR CONTROL
OK | NOK

最佳答案

这是一个简单的示例,应该解释如何将小部件跨越 GridLayout 的多个列:

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

Label firstLabel = new Label(shell, SWT.NONE);
firstLabel.setText("Label");
Text firstText = new Text(shell, SWT.BORDER);
addSpanData(firstText, 2);

Label secondLabel = new Label(shell, SWT.NONE);
secondLabel.setText("Label");
Text secondText = new Text(shell, SWT.BORDER);
addSpanData(secondText, 1);

Text thirdText = new Text(shell, SWT.BORDER);
addSpanData(thirdText, 1);

Label thirdLabel = new Label(shell, SWT.NONE);
thirdLabel.setText("Label");

Text fourthText = new Text(shell, SWT.BORDER);
addSpanData(fourthText, 2);

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

private static void addSpanData(Control comp, int span)
{
GridData data = new GridData(SWT.FILL, SWT.CENTER, true, false);
data.horizontalSpan = span;
comp.setLayoutData(data);
}
}

它看起来是这样的:

enter image description here

关于java - swt中使用FormLayout输入表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587954/

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