GridLayout网格布局在swt中应用广泛,在做企业rcp的时候,页面上用到的大部分是该布局。GridLayout既然是网格布局,在界面上就类似网格一样,一行中分为几列,类似表格。每行的列数不一定一样,也不一定对齐,这需要我们去对GridData进行编辑。GridLayout执行layout这个方法时,也是取得控件里面的children的GridData,进行计算。
下面来了解一下GridLayout这个布局。
构造方法:
public GridLayout () {} //numColumns为列数,makeColumnEqualsWidth为每列是否同样宽度 public GridLayout (int numColumns, boolean makeColumnsEqualWidth) {}
GridLayout里面的属性,基本都是描述布局的边距像素,行数
public int numColumns = 1;//默认为1列 public boolean makeColumnsEqualWidth = false;//默认每列不相等 public int marginWidth = 5;//左右边距为5 public int marginHeight = 5;//上下边距为5 public int marginLeft = 0;//左边距0 public int marginTop = 0;//上边距0 public int marginRight = 0;//右边距0 public int marginBottom = 0;//底部边距0 public int horizontalSpacing = 5;//水平间隔5 public int verticalSpacing = 5;//上下间隔5
GridLayout与GridData相配合,效果才好。
/** * verticalAlignment 指定控件的竖直方向的位置 * The default value is CENTER. * Possible values are: <ul> * <li>SWT.BEGINNING (or SWT.TOP):上部</li> * <li>SWT.CENTER: 中间</li> * <li>SWT.END (or SWT.BOTTOM): 底部</li> * <li>SWT.FILL: 上下充满</li> * </ul> */ public int verticalAlignment = CENTER; /** * 指定水平位置 * Possible values are: <ul> * <li>SWT.BEGINNING (or SWT.LEFT): Position the control at the left of the cell</li> * <li>SWT.CENTER: Position the control in the horizontal center of the cell</li> * <li>SWT.END (or SWT.RIGHT): Position the control at the right of the cell</li> * <li>SWT.FILL: Resize the control to fill the cell horizontally</li> * </ul> */ public int horizontalAlignment = BEGINNING; public int widthHint = SWT.DEFAULT;//宽度 public int heightHint = SWT.DEFAULT;//高度 public int horizontalIndent = 0;//水平缩进 public int verticalIndent = 0;//竖直向下延伸 public int horizontalSpan = 1;//所占水平方向的格数 public int verticalSpan = 1;//所占竖直方向的格数 //如果父控件在水平方向还有剩余空间,如果为true,则水平填满该控件 public boolean grabExcessHorizontalSpace = false; //同上,在竖直方向填满 public boolean grabExcessVerticalSpace = false; public int minimumWidth = 0; public int minimumHeight = 0; 其余的属性则是一些int值
其实,GridData也就是描述一下对应的控件其位置的属性。不要忘了,new GridData(....)之后,对应的obj要
control.setLayoutData(Object layoutData);
接下来就看一个实例吧。
下面这个图是工作项目中使用到的一个GridData例子
说明:
上部容器分为了两个,左边按钮与右边时间轴缩放控件。左边的容器又分成了七个按钮,每个按钮都是相同大小,这就需要在layout里设置每个grid都是相同宽度。有个细节是查询任务与容器的左边距有一定的距离,这里也是需要设置的。右边容器要设置向右靠齐,不然则会贴在左边容器的右边。ok,贴代码。
//父容器设置layout为gridLayout private void initTop(Composite comp) { topComp = new Composite(comp, SWT.BORDER); topComp.setLayout(new GridLayout(2,false));//上部面板设置为两列 GridData topCompGridData = new GridData(); topCompGridData.heightHint=60;//面板高度为60 topCompGridData.horizontalAlignment=SWT.FILL;//也可用horizontalHint进行设置,水平充满 topCompGridData.grabExcessHorizontalSpace=true;//这点要设置,不然上部面板不会充满父容器,这两个属性搭配 topComp.setLayoutData(topCompGridData); Composite topLeft = new Composite(topComp,SWT.LEFT);//左边按钮容器 topLeft.setLayout(new GridLayout(7,true));//7列,每列同样宽度 GridData topRightGridData = new GridData(SWT.END,SWT.CENTER,true,false); Composite topRight = new Composite(topComp,SWT.RIGHT); topRight.setLayoutData(topRightGridData); topRight.setLayout(new GridLayout(2,false));//两列不同宽度 // 查询按钮 { GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalIndent = 10;//水平缩进10像素 queryTaskButton = new Button(topLeft,SWT.None); queryTaskButton.setLayoutData(gd); queryTaskButton.setText("查询任务"); } { // 其余按钮就不显示了 } }
相关推荐
### SWT布局管理器在Java中的应用详解 在Java的图形用户界面(GUI)开发领域,Swing和SWT是两个广泛使用的框架。Swing是Java的一部分,而SWT(Standard Widget Toolkit)则是Eclipse项目的一部分,专门针对原生操作...
SWT布局是开发Java应用程序时使用SWT(Standard Widget Toolkit)框架进行用户界面设计的关键部分。布局管理器决定了窗口组件(如按钮、文本框等)在容器(如Composite)内的排列方式和尺寸。本文将详细介绍SWT布局...
【SWT布局详解:Eclipse开发插件使用】 在Java平台上,SWT(Standard Widget Toolkit)是一种用于构建图形用户界面(GUI)的库,它是Eclipse IDE中的核心组成部分。SWT提供了一系列的基础控件和布局管理器,使得...
text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); // 添加Button Button button = new Button(composite, SWT.PUSH); button.setText("Click Me"); button.addSelectionListener...
SWT提供了多种布局管理器,如FillLayout、GridLayout、RowLayout等,用于控制组件在容器中的排列方式。 **示例代码:** ```java GridLayout gridLayout = new GridLayout(2, false); shell.setLayout(gridLayout); ...
通过使用SWT的Layout布局机制,特别是GridLayout,开发者可以轻松地创建出功能强大且布局合理的Table组件。这对于需要展示大量数据的应用程序来说尤其重要,因为它不仅提高了应用程序的可用性,还提升了整体的用户...
- `org.eclipse.swt.layout.GridData` - `org.eclipse.swt.layout.GridLayout` - `org.eclipse.swt.widgets.Button` - `org.eclipse.swt.widgets.Combo` - `org.eclipse.swt.widgets.Composite` - `org....
- **GridData**:控制控件如何扩展或缩小以适应布局。 - **实例**:创建一个GridLayout,并设置每行和每列的宽度和高度。 ##### 8.4 FormLayout - **概述**:允许精确控制控件的位置。 - **按百分比放置控件**:...
本章主要介绍了SWT中的五种布局管理器:FillLayout、RowLayout、GridLayout、FormLayout和StackLayout。 7.1 布局管理器概述 布局管理器简化了组件定位的复杂性,避免了使用setBounds()方法进行绝对坐标定位的不便...
第7章 SWT布局管理器 98 7.1 布局管理器概述 98 7.1.1 绝对定位 98 7.1.2 托管定位 98 7.1.3 常见的布局管理器 100 7.2 FillLayout(充满式布局) 100 7.2.1 水平填充(默认)和垂直填充 101 7.2.2 ...
- `GridLayout` 是 SWT 中的一种布局管理器,它将容器(如 Shell)的区域划分为网格,并安排子组件在这些网格内。 - `shell.setLayout(new GridLayout(2, false))` 创建了一个两列的网格布局,`false` 参数表示不...
- 支持多种布局管理器:包括GridData、FillLayout、GridLayout等。 总的来说,Eclipse VE是一个强大的工具,为Eclipse用户提供了更直观的UI设计体验,特别适合那些不熟悉或者不喜欢手动编写大量UI代码的开发者。...
- SWT 提供的四个标准布局管理器是 `FillLayout`、`GridLayout`、`RowLayout` 和 `FormLayout`。其中 `RowLayout` 相对简单,但不是最简单的。 2. **错误解释:** - `MouseListener` 接口提供了五个方法,分别是 ...