通常,组件构建在容器类中,容器构建在主窗体(shell)中,主窗体也是容器,也就是说,容器不仅可以容纳组件,也可以容纳容器。有了容器,就可以通过 它来对组件进行集体操作。例如,容器在界面上移动时,其上的组件也会随着容器移动,容器隐藏,其组件也会被隐藏,容器销毁(dispose),其组件也会 被销毁。

1 面板
面板(Composite类)是最常用的容器。主窗体(shell)是面板(Composite)的子类。面板的构造方法格式如下:
Composite(Composite parent,int style)
第 一个参数表示该容器创建在哪个容器上,第二个参数表示容器的式样。Composite的式样一般都是用SWT.NONE,这时Composite在界面是 不显示出来的,只是发挥着容器的作用。如果要让容器形成凹陷效果,可以用SWT.BORDER式样。例如,在主窗体中创建一个容器:
Composite composite=new Composite(shell,SWT.NONE);
Composite的常用方法:
getLayout():得到布局管理器。
getLayoutData():得到布局数据。
getParent():得到容纳该容器的父容器。
getShell():得到容纳该容器的Shell。
layout():将容器上的组件重新布局,相当于刷新。

package edu.ch4;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
public class Sample4_8 {
public static void main(String[] args) {
Display display=new Display();//创建一个display对象。
final Shell shell=new Shell(display);//shell是程序的主窗体
shell.setText("容器示例");
Composite composite1=new Composite(shell,SWT.NONE);
composite1.setBounds(10,10,100,50);
Composite composite2=new Composite(shell,SWT.BORDER);
composite2.setBounds(120,10,100,50);
Label lb1=new Label(composite1,SWT.NONE);
lb1.setText("面板1");
lb1.pack();
Label lb2=new Label(composite2,SWT.NONE);
lb2.setText("面板2");
lb2.pack();
shell.pack();
shell.open();
while(!shell.isDisposed()){ //如果主窗体没有关闭则一直循环
if(!display.readAndDispatch()){ //如果display不忙
display.sleep(); //休眠
}
}
display.dispose(); //销毁display
}
}

2 分组框
分组框(Group类)是面板(Composite类)的子类,所以两者用法基本相同。主要区别是Group显示有一个方框,且方框线上还可以显示说明文字。

package edu.ch4;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
public class Sample4_9 {
public static void main(String[] args) {
Display display=new Display();//创建一个display对象。
final Shell shell=new Shell(display);//shell是程序的主窗体
shell.setText("分组框示例");
Group group1=new Group(shell,SWT.NONE); //创建分组框
group1.setText("录入信息"); //设置分组框说明信息
group1.setBounds(10,20,200,100);
Label lb1=new Label(group1,SWT.NONE); //在分组框中加入组件
lb1.setText("姓名:");
lb1.setBounds(10,20,70,20);
Text text1=new Text(group1,SWT.BORDER);
text1.setBounds(90,20,70,20);
Label lb2=new Label(group1,SWT.NONE);
lb2.setText("地址:");
lb2.setBounds(10,50,70,20);
Text text2=new Text(group1,SWT.BORDER);
text2.setBounds(90,50,70,20);
shell.pack();
shell.open();
while(!shell.isDisposed()){ //如果主窗体没有关闭则一直循环
if(!display.readAndDispatch()){ //如果display不忙
display.sleep(); //休眠
}
}
display.dispose(); //销毁display
}
}

3 选项卡
选项卡包括一个选项卡(TabFolder类)和一个选项页(TabItem类),TabFolder是容器,可以容纳其他容器和组件,但TabItem 不是容器,可以把它看成是一个选项标签,TabFolder通过TabItem来对其中的组件进行控制。每一个TabItem用setControl() 方法来控制一个界面组件。

package edu.ch4;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
public class Sample4_10 {
public static void main(String[] args) {
Display display=new Display();//创建一个display对象。
final Shell shell=new Shell(display);//shell是程序的主窗体
shell.setText("选项卡示例");
TabFolder tabFolder=new TabFolder(shell,SWT.NONE);//声明一个选项卡容器
tabFolder.setBounds(5,5,180,130); //设置选项卡的位置和大小
TabItem tabItem1=new TabItem(tabFolder,SWT.NONE);//声明第1个选项页
tabItem1.setText("选项1"); //设置选项页的标题
{
//创建第1个分组框,建立在tabFolder上
Group group1=new Group(tabFolder,SWT.NONE);
group1.setText("录入信息"); //设置分组框说明信息
tabItem1.setControl(group1); //让tabItem1控制group1
Label lb1=new Label(group1,SWT.NONE); //注意Label建立在group1上
lb1.setText("姓名:");
lb1.setBounds(10,20,70,20);
Text text1=new Text(group1,SWT.BORDER);
text1.setBounds(90,20,70,20);
Label lb2=new Label(group1,SWT.NONE);
lb2.setText("地址:");
lb2.setBounds(10,50,70,20);
Text text2=new Text(group1,SWT.BORDER);
text2.setBounds(90,50,70,20);
}
TabItem tabItem2=new TabItem(tabFolder,SWT.NONE); //声明第2个选项页
tabItem2.setText("选项2");
{
//创建第2个分组框,建立在tabFolder上
Group group2=new Group(tabFolder,SWT.NONE);
tabItem2.setControl(group2); //让tabItem2控制group2
group2.setText("兴趣爱好");
Button bt1=new Button(group2,SWT.CHECK);
bt1.setBounds(20,20,70,20);
bt1.setText("音乐");
Button bt2=new Button(group2,SWT.CHECK);
bt2.setBounds(20,50,70,20);
bt2.setText("美术");
Button bt3=new Button(group2,SWT.CHECK);
bt3.setBounds(20,80,70,20);
bt3.setText("体育");
}
shell.pack();
shell.open();
while(!shell.isDisposed()){ //如果主窗体没有关闭则一直循环
if(!display.readAndDispatch()){ //如果display不忙
display.sleep(); //休眠
}
}
display.dispose(); //销毁display
}
}

转载于:https://www.cnblogs.com/happyPawpaw/archive/2012/10/19/2730433.html

SWT/JFace常用组件----容器类相关推荐

  1. SWT学习|常用组件及参数

    SWT中的各种参数 按钮组件(Button) Button的常用样式 SWT.PUSH / SWT.NONE 普通按钮 SWT.CHECK 多选按钮 SWT.RADIO 单选按钮 //在同一个grou ...

  2. java swt designerpdf_eclipse学习笔记!(4) ----- SWT Designer 下 SWT常用组件

    一个button类的实例 基本的步骤和之前的是一样的,一个SWT的项目,然后在页面设置面板里添加button.双击button(直接在source里面添加了监听器的代码).下面是代码: publicc ...

  3. java swt button_JAVA.SWT/JFace: SWT基本组件之按钮(Button)

    <Eclipse SWT/JFACE 核心应用> 清华大学出版社 5.2 按钮(Button) 按钮有普通按钮(SWT.PUSH).单选按钮(SWT.RADIO).多选按钮(SWT.CHE ...

  4. java开发之图形界面GUI初步-Swing几种常用组件及其应用

    package test; import java.awt.*; import java.awt.event.KeyEvent; import javax.swing.*; /* * 作者:钟志钢 * ...

  5. 微信小程序的常用组件

    目录 一.常用的视图容器类组件 ① view ② scroll-view ③ swiper 和 swiper-item 二.常用的基础内容组件 ① text ② rich-text 三.其它常用组件 ...

  6. 微信小程序の再体验 - - 常用组件

    常用组件 1.1.view 1.2.scroll-view 1.3.swiper 和 swiper-item 1.4.text和rich-text 1.5.button 1.6.image 组件 解释 ...

  7. 微信小程序 一 小程序的创建、宿主环境、常用组件、开发上线等

    小程序简介 1. 小程序与普通网页开发的区别 运行环境不同 网页运行在浏览器环境中 小程序运行在微信环境中 API 不同 由于运行环境的不同,所以小程序中, 无法调用 DOM 和 BOM 的 API. ...

  8. 微信小程序(json文件作用、WXML模板、宿主环境、通信模型、运行机制、常用组件、宿主API、协同工作和发布)

    简介 黑马程序员视频学习记录 视频链接:黑马程序员前端微信小程序开发教程,微信小程序从基础到发布全流程_企业级商城实战 文章目录 简介 ---- json文件的作用 ---- 1. app.json ...

  9. JQuery EasyUI的常用组件

    jQuery EasyUI 是一个基于 jQuery 的框架,集成了各种用户界面插件,该框架提供了创建网页所需的一切,帮助您轻松建立站点. 注:本次介绍的JQuery EasyUI版本为1.5版. 一 ...

  10. wdcp php5.3 pdo_mysql,WDCP常用组件(memcache、mysqli、PDO_MYSQL、mysql innodb、libmcrypt、php zip)的安装方法...

    一般来说WDCP安装之后就可以正常使用了,不过对于一些朋友来说还无法满足,现在收集了有关WDCP常用组件,比如memcache.mysqli.PDO_MYSQL.mysql innodb.libmcr ...

最新文章

  1. 什么是python全栈
  2. SAP系统日常管理 常见 t-code (二)
  3. linux 追加多行文件,linux多行文件信息追加
  4. mysql 存储微信昵称乱码_MYSQL 保存微信昵称特殊字符报错解决方法-设置编码集为utf8mb4的方法...
  5. 【函数计算月报】2018年10月刊
  6. Rstudio更换默认下载镜像(下载源)教程
  7. ArcGIS REST API获取切片进度
  8. 兰州大学2016年初试成绩基本要求
  9. python选取tensor某一维_python基础教程详解torch.Tensor的4种乘法
  10. 不能注册DLL/OCX:RegSvr32失败 0x5
  11. js封装websocket
  12. SPSS分析数据学习笔记
  13. 步进电机、伺服电机、舵机的区别与控制(角度、转速)
  14. 甲每秒跑3米,乙每秒跑4米,丙每秒跑2米,三人沿600米的环形跑道从同一地点同时同方向跑步,经过多少时间三人又同时从出发点出发?
  15. 【报告分享】2019年人工智能中国专利技术分析报告.pdf(附下载链接)
  16. QuickTime文件格式
  17. QPS、TPS、PV、UV、RPS、IP、GMV、DAU、MAU
  18. 【操作系统】程序执行过程
  19. ERP不规范,同事哭晕在厕所
  20. 《自然语言处理(哈工大 关毅 64集视频)》学习笔记:第七章 句法分析技术

热门文章

  1. ES6躬行记(3)——解构
  2. Eclipse 2017最佳20个插件
  3. 【Mac】Mac 使用 zsh 后, mvn 命令无效
  4. MyEclipse查看.class文件
  5. Java将对象保存到文件中/从文件中读取对象
  6. HtmlTextWriter类的学习
  7. MySQL备份---lvm snapshot
  8. BZOJ 3689: 异或之
  9. ng-repeat动态生成的DOM如何获取宽度(封装好的方法)
  10. 你应该知道的Linux历史