JavaGUI框架之SWT【布局FillLayout】

文章目录

  • 两种定位方式
    • 绝对定位
    • 托管定位
  • FillLayout
    • 布局方向
    • 布局留白

终于来到我最喜欢的部分——布局篇章。可以说布局就是SWT的灵魂。

布局如此重要,那么我们该怎么理解布局这个概念呢?我们以Button这个组件为例子,如果将他放在Shell上,那么他该定位在shell的哪个位置呢他的大小又该如何控制呢?这些都是布局控制的内容。

两种定位方式

绝对定位

绝对定位,通过代码的方式设置控件应该出现在容器的哪个位置。在SWT中,设置位置需要提供一个四元组(x, y, width, height)。具体如下所示

我们创建了一个Button,并通过setBounds方法定位button在shell中的位置

Button button = new Button(shell, SWT.PUSH);
button.setText("决定定位");
button.setBounds(100, 50, 200, 50);

JavaGUI框架之SWT【布局FillLayout】_第1张图片

tip: 需要注意的是绝对定位下,组件的布局不会随着窗口大小的变化而变化

托管定位

托管定位,编码人员无需手动设置组件的位置,只需要将组件放入容器面板中,组件的具体定位全部交由容器面板的布局(Layout)决定

在SWT框架中,托管定位常见的布局有如下5种:RowLayout,FillLayout,GridLayout,StackLayout,FormLayout

为了更好的理解布局这个概念,我们以搭积木为例。积木对应着SWT中的组件,如Button、Label、Text等。这些积木需要积木板来容纳,也就是容器面板。绝对定位的意思是,积木通过吸铁石固定在积木板上,通过对积木的设定,我们可以将积木定位在积木板上的任意位置;托管定位的意思是,我们将积木放在积木板上,积木会依据积木板已有的结构自动出在合适的位置,积木板已有的结构就像通道与卡槽,会让组件自动滑倒合适的位置而不需要编码人员手动控制。我们需要做的只是设置好积木板的结构,也就是布局Layout

FillLayout

FillLayout是托管布局的一种,也是最简单的布局方式。它的布局理念是尽可能的填充满容器,且保证容器内的组件大小均匀

如下所示,我们为Shell窗口分别创建了1个,3个Button,在FillLayout的影响下,Button填充满整个Shell,并且大小均匀。

JavaGUI框架之SWT【布局FillLayout】_第2张图片
JavaGUI框架之SWT【布局FillLayout】_第3张图片

布局方向

我们可以通过常量SWT来控制FillLayout的布局方向

常量 描述 图片
SWT.VERTICAL 垂直布局 JavaGUI框架之SWT【布局FillLayout】_第4张图片
SWT.HORIZONAL 水平布局 JavaGUI框架之SWT【布局FillLayout】_第5张图片

tip: 此处的SWT.VERTICAL , SWT.HORIZONAL针对的是shell的布局,不是Button组件的布局

布局留白

我们可以设置FillLayout的marginHeightmarginWidth属性控制组件四周留白

FillLayout fillLayout = new FillLayout(SWT.HORIZONTAL);
fillLayout.marginHeight = 20;
fillLayout.marginWidth = 50;
fillLayout.spacing = 10;
shell.setLayout(fillLayout);

JavaGUI框架之SWT【布局FillLayout】_第6张图片

你可能感兴趣的:(SWT,GUI,SWT,Java)