java swt 布局管理器_JAVA.SWT/JFace: SWT布局管理器

本文详细介绍了Java SWT中的布局管理器,包括FillLayout、RowLayout、GridLayout、FormLayout和StackLayout。通过实例展示了各种布局如何设置和使用,以及如何自定义布局管理器实现特定的布局需求。通过对控件大小、位置的调整,帮助开发者更好地组织用户界面。
摘要由CSDN通过智能技术生成

7.1 布局管理器概述

FillLayout(充满式布局):在单行或单列中放置相同大小的控件,是最简单的布局。

RowLayout(行列式布局):在单行或者多行中放置控件,应用了fill、wrap和spacing等选项。

GridLayout(网格式布局):向表格一样放置控件。

FormLayout(表格式布局):与GridLayout功能差不多的布局,可以通过定义4个边的“附加值”来放置控件。

StackLayout(堆栈式布局):类似堆栈式的布局,只显示最上方的控件。

7.2 FillLayout(充满式布局)

规则:试图填充一行或一列,尽可能的充满整个面板,并且强制所有控件平均分配大小。FillLayout不会自动执行,也不能设置每个控件之间的空隙,但能够指定面板的四周的空白。

FillLayout layout = new FillLayout(SWT.VERTICAL);

FillLayout layout = new FillLayout();

layout.type = SWT.VERTICAL; // 默认为:SWT.HORIZONTAL

水平填充(SWT.HORIZONTAL):

21377574_1.jpg

垂直填充(SWT.VERTICAL):

21377574_2.jpg

设置四周补白:

FillLayout layout = new FillLayout();

layout.type=SWT.VERTICAL;

layout.marginHeight = 10; // 设置上下补白高度

layout.marginWidth = 20; // 设置左右

layout.spacing = 5;    // 设置控件之间的空隙

shell.setLayout( layout );

显示效果:

21377574_3.jpg

7.3 RowLayout(行列式布局)

RowLayout填充控件时可以折行显示,并且可以使用RowData设置某一个指定控件的大小。

packagewww.swt.com.ch7;

import org.eclipse.swt.SWT;

public class RowLayoutSample {

public static void main(String[] args) {

Display display = new Display();

Shell shell = new Shell(display, SWT.SHELL_TRIM);

RowLayout layout = new RowLayout();

layout.type = SWT.HORIZONTAL;// 设置水平填充

layout.marginLeft = 5;// 左补白

layout.marginTop = 5;// 上补白

layout.marginRight = 5;// 右补白

layout.marginBottom = 5;// 下补白

layout.spacing = 2;// 控件的间隙

layout.wrap = true;// 是否折行显示

layout.pack = false;// false:控件平均分配大小

layout.justify = true;// 是否充满整个一行

shell.setLayout(layout);

new Button(shell, SWT.NONE).setText("B1");

new Button(shell, SWT.NONE).setText("Button2");

new Button(shell, SWT.NONE).setText("Wide Button3");

new Button(shell, SWT.NONE).setText("B4");

shell.layout();

shell.pack();

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch())

display.sleep();

}

display.dispose();

}

}

显示效果:

21377574_4.jpg

设置控件的大小:

//   layout.pack = false;// false:控件平均分配大小

Button b = new Button(shell, SWT.NONE);

b.setText("RowData");

b.setLayoutData(new RowData(100, 30));

显示效果:

21377574_5.jpg

设置是否等宽或等高:fill属性

当以水平方式填充时,fill属性试图使所用控件具有同样高度;当以垂直方式显示时,试图使用所有控件具有同样宽度。

水平填充,设置等高:layout.fill = true;

21377574_6.jpg

垂直填充,设置等宽:layout.fill = true;

21377574_7.jpg

7.4 GridLayout(网格式布局)

使用GridLayout布局,控件将会按照网格的方式进行填充。GridLayout所放置的控件可以有一个关联的布局数据对象GridData。GridLayout的强大功能在于,可以使用GridData为每一个控件设置不同的布局。

import org.eclipse.swt.SWT;

public class GridLayoutSample {

public static vo

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作者:talent_marquis邮件:talent_marquis@163.com################19/12/2007更新###################新添加/重写的功能:1. 已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互)2. 添加创建新文件夹功能3. 添加选择全部/文件/文件夹功能4. 增加对创建新文件夹,重命名,删除,粘贴操作的异常处理5. FileUtil中增加getFileCentent方法,用于读取文本文件内容6. 重写AboutDialog7. 重写ExitAction8. 重写FileUtil中doPaste()方法,显著提高速度,修正拷贝文件时会导致文件不正常的严重Bug9. 修正其他部分已发现Bug10. 版本号升级为0.5尚未实现的功能:1. 与外界程序的交互2. 拖拽3. 国际化4. 输入文件名时对特殊字符的验证################17/12/2007更新###################新添加/重写的功能:1. 排序功能已加入菜单栏和弹出菜单2. 重写图标载入方法,已经可以实现图标动态载入和识别3. 重写TableViewer中tableColumn生成载入方法,已经可以实现tablecolumn的半动态载入和识别4. 实现动态识别文件类型5. 进行删除操作时,对删除的文件进行识别6. 更新添加了一些FileUtil中的方法,并且把这个类的注释写的差不多了 - -注意:1. icons文件夹内的文件结构有变化。2. jar文件没有更新,如果需要打好包的jar文件请等我把功能都实现后的那个版本 - -尚未实现的功能:1. 剪切/复制/粘贴功能2. 拖拽功能3. 详尽的注释4. 异常处理5. 国际化################14/12/2007更新###################已经实现的基本功能:1. 树形浏览结构2. 双击 运行程序/进入下一级菜单目录3. 返回上一级菜单4. 重命名5. 刷新6. 删除7. 按文件名/大小/类型/最后修改日期排序8. 对当前文件夹进行过滤操作9. 对当前文件夹的简要统计尚未实现的功能:1. 剪切/复制/粘贴2. 拖拽3. 弹出菜单中的排序选项4. 动态识别文件类型5. 详尽的注释已知的Bug:1. TreeViewer进行目录切换时,TableViewer窗体有时会变成空白2. 有特殊字符的过滤操作将导致异常3. 重命名没有考虑特殊字符4. 有大量文件(几百个以上)的目录会打开的很慢5. 文件删除失败时没有提示######新添加/重写的功能:1. 已实现简单的剪切/复制/粘贴功能(尚不能和外界程序交互)2. 添加创建新文件夹功能3. 添加选择全部/文件/文件夹功能4. 重写AboutDialog5. 增加对创建新文件夹,重命名,删除,粘贴操作的异常处理6. 重写ExitAction7. 修正部分已发现Bug尚未实现的功能:1. 与外界程序的交互2. 拖拽3. 国际化4. 输入文件名时对特殊字符的验证

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值