JavaGUI之SWT框架【RowLayout】

文章目录

  • Rowlayout介绍
  • RowLayout属性
    • wrap属性
    • pack属性
    • justify属性
    • type属性
    • 留白属性
    • fill属性
  • RowData

Rowlayout介绍

RowLayout是托管布局的一种,它的布局理念是将面板容器按照行来划分,优先填充行。当行填充满或无剩余空间时,填充下一行。RowLayout与FillLayout不同的是,FillLayout是以整个容器面板为单位进行填充,RowLayout则是将面板划分为若干行,以行为单位进行填充。除此之外,RowLayout填充时,会按照组件自动分配大小,而不是像FillLayout那样为所有组件设置同样的大小

RowLayout
JavaGUI之SWT框架【RowLayout】_第1张图片

RowLayout属性

wrap属性

wrap属性用于控制组件是否换行。RowLayout按照行来填充组件,当组件将一行填满时,如果rowLayout.wrap = true,那么换行填充。否则只在同一行填充,具体效果如下
JavaGUI之SWT框架【RowLayout】_第2张图片

pack属性

pack属性控制控件是否保持他们最适合的长度属性。如果pack = true,那么在布局时组件的长度会根据组件本身进行计算,如果pack = false,那么所有组件的大小将会相等,这点和FillLayout有点类似。

JavaGUI之SWT框架【RowLayout】_第3张图片

justify属性

justify属性控制组件在布局时是否占满一行。如果justify = true,那么RowLayout在布局时会通过调整组件间距使得组件能尽量均匀的填满一行justify = false则不会控制组件间距。

JavaGUI之SWT框架【RowLayout】_第4张图片

type属性

type属性用于控制RowLayout的布局方向。type属性有两个允许的值SWT.HORIZONTALSWT.VERTICAL。当rowLayout.type = SWT.HORIZONTAL时,RowLayout将会按照划分行的方式布局;当rowLayout.type = SWT.VERTICAL时,RowLayout将会按照列的方式进行布局。

JavaGUI之SWT框架【RowLayout】_第5张图片

留白属性

rowLayout的留白属性和FillLayout相差不大,所以不在赘述。感兴趣的读者可以查看这篇文章JavaGUI框架之SWT【布局FillLayout】

fill属性

fill属性用来控制组件是否等高,是否等宽。当fill = true时,如果type = SWT.HORIZONTAL,那么组件将会等高;当fill = false时,如果type = SWT.VERTICAL,那么组件将会等宽

JavaGUI之SWT框架【RowLayout】_第6张图片

RowData

如果控件被RowLayout布局控制,那么可以对控件设置RowData来单独影响组件大小
如下图所示,当前布局为RowLayout,在RowLayout影响下,其内的控件能够通过设置RowData单独影响大小。

Button b1 = new Button(child3, SWT.PUSH);
RowData rowData = new RowData(300, 100);
b1.setLayoutData(rowData);
b1.setText("b1");

tip:

  1. RowData设置的是被控制的控件,而不是设置布局的容器面板b1(Button)设置LayoutData而不是child3
  2. RowData设置的前提是控件被RowLayout布局控制,以上述代码为例,如果chld3设置的布局方式是GridLayout,但b1设置的LayoutData是RowData,程序将会报错

JavaGUI之SWT框架【RowLayout】_第7张图片

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