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

问题描述 投票:0回答:2

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

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

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

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

在Android中,这非常简单,您只需要在布局中放置布局,而在父布局中,您必须简单地将其内容放在中心。但在这里我找不到办法。即使我找不到在布局中放置布局的方法。所以我无法理解如何做酷炫的GUI。这些是我的问题:

  1. 即使shell最大化,我如何将一组组件(例如,登录面板)置于shell的中心?
  2. 可以在布局中放置布局吗?如果没有,那么,我怎么能做复杂而漂亮的GUI?
  3. 是否有存储库可以下载使用WindowBuilder SWT完成的复杂或漂亮GUI的示例代码?

感谢你们

java eclipse swt windowbuilder
2个回答
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因为我认为它们稍微容易理解。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.