Eclipse SWT 布局总结

2023-12-15 04:48:32

Java doc

  • https://help.eclipse.org/latest/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/layout/package-summary.html

SWT 布局类型

  • 绝对布局 absolute
  • 表单布局 FormLayout (相对布局)
  • 填充布局 FillLayout(水平填充、垂直填充)
  • 网格布局 GridLayout(列数、列宽度是否相同)
  • 行布局 RowLayout(水平行、垂直行)
  • 栈布局 StackLayout (后进先显示)

通过Composite.setLayout()方法设置布局

org.eclipse.swt.widgets.Composite#setLayout(null)

绝对布局 absolute

设置绝对布局

setLayout(null)

设置组件位置、大小

通过Control.setBounds方法设置组件位置、大小

org.eclipse.swt.widgets.Control#setBounds (int x, int y, int width, int height) 

x:水平距离
y:垂直距离
(0,0)是窗体的左上角。

案例:

btnNewButton.setBounds(0, 0, 50, 50);//按钮显示在窗体的左上角宽、度高多都为50

表单布局 FormLayout

设置表单布局

setLayout(new FormLayout());

设置组件布局数据

  • 通过org.eclipse.swt.widgets.Control#setLayoutData设置布局数据
  • 通过org.eclipse.swt.layout.FormData 创建布局数据
Button btnNewButton = new Button(this, SWT.NONE);
FormData fd_btnNewButton = new FormData();
fd_btnNewButton.top = new FormAttachment(0, 10);
fd_btnNewButton.left = new FormAttachment(0, 10);
btnNewButton.setLayoutData(fd_btnNewButton);
btnNewButton.setText("New Button");

Button btnNewButton_1 = new Button(this, SWT.NONE);
FormData fd_btnNewButton_1 = new FormData();
fd_btnNewButton_1.top = new FormAttachment(btnNewButton, 0, SWT.TOP);//相对btnNewButton
fd_btnNewButton_1.left = new FormAttachment(btnNewButton, 6);
btnNewButton_1.setLayoutData(fd_btnNewButton_1);
btnNewButton_1.setText("New Button");

填充布局 FillLayout

设置填充布局

setLayout(new FillLayout(SWT.HORIZONTAL));//水平填充
setLayout(new FillLayout(SWT.VERTICAL));//垂直填充
  • 组件后会按水平或垂直填充整个窗体。
  • 调整窗体大小组件随之改变大小填充。

网格布局 GridLayout

设置网格布局

setLayout(new GridLayout(2, false));

构造方法

public GridLayout (int numColumns, boolean makeColumnsEqualWidth) 
  • 创建网格布局是需要指定列数、列是否等宽

设置组件布局数据

  • 通过org.eclipse.swt.widgets.Control#setLayoutData设置组件布局数据。
  • 通过org.eclipse.swt.layout.GridData设置网格数据。可以设置水平、垂直对齐类型(左对齐、居中对齐、右对齐、填充对齐),水平、垂直跨越单元格个数。

GridData 构造方法

public GridData (int horizontalAlignment, int verticalAlignment, boolean grabExcessHorizontalSpace, boolean grabExcessVerticalSpace, int horizontalSpan, int verticalSpan) 
  • horizontalAlignment 水平对齐方式
  • verticalAlignment 垂直对齐方式
  • grabExcessHorizontalSpace 单元格是否足够宽以适应剩余的水平空间,是否预留足够宽度,可以设置为false使对齐。
  • grabExcessVerticalSpace 单元格是否足够高以适应剩余的垂直空间,是否预留足够宽度,可以设置为false使对齐。
  • horizontalSpan 水平跨度(单元格合并的意思
  • verticalSpan 垂直跨度(单元格合并的意思

在这里插入图片描述

行布局 RowLayout

设置行布局

setLayout(new RowLayout(SWT.VERTICAL));//水平行
setLayout(new RowLayout(SWT.HORIZONTAL));//垂直行

添加组件后会水平或垂直排列。

栈布局 StackLayout

设置栈布局

setLayout(new StackLayout());

添加组件按后进或先进先 填充整个窗体。

组合布局

可以通过org.eclipse.swt.widgets.Composite 进行组合布局。

文章来源:https://blog.csdn.net/jastzhang/article/details/122266744
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。