繁体   English   中英

关于WindowBuilder SWT java gui构建的一些问题

[英]Some questions about WindowBuilder SWT java gui building

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

我可以找到一些超级简单的教程,在这些教程中,您只能看到 windowbuilder 的组件和部分以及类似 hello world 的项目。

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

我希望这组组件以屏幕为中心而不填满屏幕。 我的意思是当用户最大化屏幕时,组件不能变大。

在 Android 中,这很容易,您只需要将 Layout 放在 Layout 中,而在父布局中,您只需将其内容居中即可。 但在这里我找不到办法做到这一点。 即使我找不到将布局放入布局中的方法。 所以我无法理解如何做很酷的 GUI。 这些是我的问题:

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

  2. 可以将布局放在布局中吗? 如果没有,那么,我怎样才能做复杂而漂亮的 GUI 呢?

  3. 是否有任何地方可以下载带有使用 WindowBuilder SWT 完成的复杂或漂亮 GUI 的示例代码的存储库?

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

  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因为我认为它们更容易理解。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM