有关WindowBuilder SWT Java GUI生成的一些问题

时间:2018-08-17 08:40:52

标签: java eclipse swt windowbuilder

我正在尝试学习WindowBuilder SWT,但是在找到有关如何做正确的GUI的真实解释的良好示例或良好教程时遇到了问题,例如,所有组件都位于外壳中间。

我可以找到一些非常简单的教程,在这些教程中,您只能看到windowbuilder的组件和组成部分以及类似Hello World的项目。

我只发现您可以使用gridlayout并制作一个标签来填充所有宽度和高度,然后将其居中,但这不是我想要达到的目的。

我希望那组组件在屏幕上居中而不填充屏幕。我的意思是,当用户最大化屏幕时,组件一定不能变大。

在Android中,这非常容易,您只需要将Layout放在Layout中,在父布局中,您只需将其内容居中即可。但是在这里我找不到解决方法。甚至我也找不到将布局放入布局的方法。所以我不明白如何做酷的GUI。这些是我的问题:

  1. 即使最大化外壳,如何将一组组件(例如,登录面板)居中放置在外壳中央?

  2. 是否可以将布局放入布局中?如果没有,那我该怎么做复杂而漂亮的GUI?

  3. 在任何地方都可以找到一个存储库,可以通过WindowBuilder SWT下载具有复杂或精美的GUI的示例代码吗?

谢谢你们

2 个答案:

答案 0 :(得分:1)

这是一个简单的SWT应用程序,在shell中显示居中的控件。它是一个以外壳为中心的内部复合材料。

  public static void main(final String [] args)
  {
    Display.setAppName("Stackoverflow");

    Display display = new Display();

    Shell shell = new Shell(display, SWT.SHELL_TRIM);

    shell.setText("Stack Overflow");

    shell.setSize(1000, 800);

    shell.setLayout(GridLayoutFactory.swtDefaults().create());

    Composite inner = new Composite(shell, SWT.BORDER);
    inner.setLayoutData(GridDataFactory.swtDefaults().align(SWT.CENTER, SWT.CENTER).grab(true, true).create());

    inner.setLayout(GridLayoutFactory.swtDefaults().create());

    Text text = new Text(inner, SWT.LEAD);
    text.setLayoutData(GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).hint(200, SWT.DEFAULT).create());

    Button button = new Button(inner, SWT.PUSH);
    button.setText("Login");
    button.setLayoutData(GridDataFactory.swtDefaults().align(SWT.CENTER, SWT.CENTER).create());

    shell.open();

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

    display.dispose();
  }

我使用GridDataFactoryGridLayoutFactory而不是GridLayoutGridData,因为我认为它们更容易理解。

答案 1 :(得分:0)

Windowbuilder是一个非常强大的工具,但是当您不熟悉GUI设计时,应该花点时间阅读手册。请在Google上搜索“ WindowBuilder用户指南”,您将找到该手册。