簡體   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