`

SWT之结合FillLayout和FormLayout结合做一个Group应用

阅读更多
    FillLayout是布局类中最简单的,它把所有的控件放在一行或一列,并使它们有相同的大小。它有一个公有(public)的属性和类型,决定控件是放在一行还是放在一列。可以把类型传递给构造函数,也可以在构造函数后设置类型。
构造函数:
1、public FillLayout()   Constructs a FillLayout and sets type to SWT.HORIZONTAL.
2、public FillLayout(int type)   Constructs a FillLayout and sets type to the passed type.
FillLayout不检查type的合法性,所以可以传递任意的int值。尽管FillLayout的默认设置是SWT.HORIZONTAL,但如果传递一个既非SWT.HORIZONTAL又非SWT.VERTICAL的值,它将使用SWT.VERTICAL。

  布局类FormLayout是一个依据附件的来设置控制每个控件的位置,对应与每一个FormData都有4个设置,bottom、left、right、top设置控件的位置,如:pingpongData.bottom = new FormAttachment(basketball,0,SWT.BOTTOM); FormAttachment的构造函数有多个:

Attribute
int alignment
指定是以另外一个部件的哪一边为基准的.可能的值是:SWT.TOP , SWT.CENTER , 和 SWT.BOTTOM.默认是以最近的一边为基准.
Control control
指定 FormAttachment是以哪个部件为参照物.
int denominator
指定分母.默认值为100
int numerator
指定分子
int offset
指定离 composite边界或部件的边界的偏移量.单位是象素.

Constructor
Description
FormAttachment(Control control)
以另外的某个部件为参照物.
FormAttachment(Control control, int offset)
以另外的某个部件为参照物,加上偏移量.
FormAttachment(Control control, int offset, int alignment)
以另外的某个部件为参照物,加上偏移量和alignment
FormAttachment(int numerator)
设定分子.分母为100,没有偏移量
FormAttachment(int numerator, int offset)
指定分子和偏移量和 100的分母
FormAttachment(int numerator, int denominator, int offset)
特定的分子,分母,偏移 量


下面结合FillLayout和FormLayout结合做一个Group应用,并且给篮球选择框设置了一个监听器。


Display display = new Display();
		Shell shell = new Shell(display);
		shell.setText("create Group");

		FillLayout fill = new FillLayout(SWT.HORIZONTAL);
		fill.marginHeight =5;
		fill.marginWidth = 5;
		fill.spacing = 10;
		shell.setLayout(fill);
		
		Group group = new Group(shell, SWT.NONE);
		group.setText("业余爱好:");
		group.setLayout(new FormLayout());
		
		Label sport = new Label(group, SWT.LEFT);
		FormData sportLabel = new FormData(); 
		sportLabel.top = new FormAttachment(0,10);
		sportLabel.left = new FormAttachment(0,10);
		sport.setLayoutData(sportLabel);
		sport.setText("运动:");
		
		final Button basketball = new Button(group, SWT.CHECK);
		FormData basketballData = new FormData();
		basketballData.bottom = new FormAttachment(sport,0,SWT.BOTTOM);
		basketballData.left = new FormAttachment(sport,16);
		basketball.setLayoutData(basketballData);
		basketball.setText("篮球");
		basketball.addSelectionListener(new SelectionListener() {
			
			@Override
			public void widgetSelected(SelectionEvent e) {
				// TODO Auto-generated method stub
				if(basketball.getSelection())
					System.out.println("我选择了篮球的爱好");
			}
			
			@Override
			public void widgetDefaultSelected(SelectionEvent e) {
				// TODO Auto-generated method stub
			}
			
		});
		
		Button pingpongBut = new Button(group, SWT.CHECK); 
		FormData pingpongData = new FormData();
		pingpongData.bottom = new FormAttachment(basketball,0,SWT.BOTTOM);
		pingpongData.left = new FormAttachment(basketball,16);
		pingpongBut.setLayoutData(pingpongData);
		pingpongBut.setText("兵乓球");
		
		Button footballBut = new Button(group, SWT.CHECK); 
		FormData footballData = new FormData();
		footballData.bottom = new FormAttachment(pingpongBut, 0,SWT.BOTTOM);
		footballData.left = new FormAttachment(pingpongBut, 16,SWT.RIGHT);
		footballBut.setLayoutData(footballData);
		footballBut.setText("足球");
		
		Label separator = new Label(group, SWT.SEPARATOR | SWT.HORIZONTAL);
		FormData separatorData = new FormData();
		separatorData.top = new FormAttachment(sport, 6);
		separatorData.bottom = new FormAttachment(sport, 8, SWT.BOTTOM);
		separatorData.right = new FormAttachment(100, -10);
		separatorData.left = new FormAttachment(sport, 0, SWT.LEFT);
		separator.setLayoutData(separatorData);
		
		Label recreation = new Label(group, SWT.NONE);
		FormData recreationData = new FormData();
		recreationData.left = new FormAttachment(sport, 0, SWT.LEFT);
		recreationData.top = new FormAttachment(separator, 15);
		recreation.setLayoutData(recreationData);
		recreation.setText("娱乐:");
		
		Button movieBut = new Button(group, SWT.CHECK); 
		FormData movieData = new FormData();
		movieData.bottom = new FormAttachment(recreation,0,SWT.BOTTOM);
		movieData.left = new FormAttachment(basketball, 0, SWT.LEFT);
		movieBut.setLayoutData(movieData);
		movieBut.setText("看电影");
		
		Button gameBut = new Button(group, SWT.CHECK); 
		FormData ganmeData = new FormData();
		ganmeData.bottom = new FormAttachment(recreation,0,SWT.BOTTOM);
		ganmeData.left = new FormAttachment(pingpongBut, 0, SWT.LEFT);
		gameBut.setLayoutData(ganmeData);
		gameBut.setText("玩网游");
		
		Button musicBut = new Button(group, SWT.CHECK); 
		FormData musicData = new FormData();
		musicData.bottom = new FormAttachment(recreation,0,SWT.BOTTOM);
		musicData.left = new FormAttachment(footballBut, 0, SWT.LEFT);
		musicBut.setLayoutData(musicData);
		musicBut.setText("听音乐");
		
		shell.pack();
		shell.open();
		while(!shell.isDisposed()){
			if(!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
  • 大小: 6.8 KB
分享到:
评论

相关推荐

    swt 布局管理器 java中应用

    GridLayout是最常用的布局管理器之一,它将父组件划分为一个二维网格,子组件可以占据一个或多个单元格。GridLayout通过`numColumns`属性确定网格的列数,同时通过`makeColumnsEqualWidth`属性可以控制所有列是否...

    eclipse swt/jface核心应用

    SWT是Eclipse中的一个低级别库,它直接与操作系统API交互,提供了诸如按钮、文本框、列表等基本的GUI组件。SWT的设计目标是提供高效、高性能的UI组件,同时保持与各个平台的原生UI一致。SWT通过动态链接到操作系统...

    SWT 案例之学习精华

    SWT,全称为Standard Widget Toolkit,是Eclipse项目下的一个开源图形用户界面(GUI)工具包,主要用于构建Java应用程序的用户界面。它提供了一系列丰富的组件,如按钮、文本框、菜单等,使得开发者能够创建出功能...

    swt-designer开发教程

    SWT Designer 是一个强大的图形化设计工具,它为Java开发者提供了创建和设计 SWT (Standard Widget Toolkit) 和 JFace 应用程序的强大支持。本教程集合了八个PDF文档,旨在帮助初学者快速掌握SWT开发的基础和高级...

    Eclipse SWT/JFace 核心应用

    同时,Eclipse RCP(Rich Client Platform)框架就是基于SWT和JFace构建的,它为开发者提供了一个完整的框架,用于创建功能强大的桌面应用程序。 在Eclipse SWT/JFace核心应用中,以下几个关键知识点不容忽视: 1....

    SWT应用的开发实例:没有使用到OSGi

    **SWT(SWT - Standard Widget Toolkit)** 是一个用于构建Java GUI应用程序的开源库,它提供了与本机系统更紧密的集成,使得Java程序可以拥有与本机操作系统一致的外观和感觉。SWT的设计目标是提供一种高效、轻量级且...

    eclipse开发SWT应用

    这段代码创建了一个简单的SWT应用,包含一个标题为"SWT Demo"的窗口,窗口内有一个按钮。当用户点击按钮时,系统会处理相应的事件,但在这里没有具体实现。 在开发过程中,可以利用Eclipse的强大调试功能,如断点、...

    32位swt的jar包

    SWT(Standard Widget Toolkit)是Eclipse开源组织提供的一款用于创建Java图形用户界面(GUI)的库,它是Java AWT和Swing之外的一个选择。SWT设计的目标是提供更高效、更原生的UI体验,因为它直接与操作系统API交互...

    swt - designer 学习实例

    SWT (Standard Widget Toolkit) 是一个用于开发Java GUI应用程序的开源库,它是Eclipse IDE的基础。这个"swt - designer 学习实例"压缩包显然包含了一系列关于如何使用SWT进行编程的示例,这对于学习和理解SWT的用法...

    swt form

    标题“swt form”指的是SWT(Standard Widget Toolkit)中的表单组件,这是一种在Java中创建桌面应用...对于准备Android面试的开发者来说,理解SWT的基础和特性,尤其是其在跨平台开发中的优势,可能会成为一个加分项。

    Eclipse SWT/JFace 核心应用光盘源码

    JFace则是建立在SWT之上的一个高级UI框架,它简化了SWT的使用,提供了数据绑定、对话框、视图、表和树等控件的抽象。JFace通过模型-视图-控制器(MVC)的设计模式,帮助开发者更好地组织代码,减少重复工作,并且...

    Eclipse SWT/JFace核心应用

    Eclipse SWT (Standard ...了解并熟练掌握这些Eclipse SWT和JFace的核心概念和应用,对于开发高质量的Eclipse插件和RCP应用至关重要。通过深入学习和实践,开发者可以创建出功能强大、高效且用户友好的桌面应用程序。

    Eclipse SWT/JFace 书中 全部实例

    JFace则建立在SWT之上,为SWT提供了一个更高层次的抽象。它简化了UI的构建,通过模型-视图-控制器(MVC)模式来组织代码,使界面设计更为清晰,同时提供了数据绑定、对话框、视图管理等高级功能。JFace的目的是减少...

    java eclipse swt教程

    7. **SWT与JFace的结合**:JFace是基于SWT的一个高级界面库,提供了更多抽象和便利的功能,如数据绑定、视图和控制器模式等,可以简化SWT应用的开发。 8. **读写文件**:在创建类似Word的应用时,你需要学习如何...

    SWT开发教程1

    SWT的设计目标是提供一个高效、功能丰富的GUI工具包,能够与本地操作系统紧密集成,从而获得更好的性能和原生外观。在本教程中,我们将深入学习SWT开发的基本概念和实践技巧。 1. SWT简介: SWT是由Eclipse基金会...

    SWT.rar_SWT

    1. **窗口和壳体(Shell)**:在SWT中,所有GUI元素都位于一个壳体对象内,壳体代表了应用程序的顶级窗口。你可以创建多个壳体,但通常一个应用程序只有一个主壳体。 2. **布局管理(Layouts)**:SWT支持多种布局...

    SWT.rar_ java swt_SWT_java swt_java s_java swt

    在实际应用中,SWT的一个显著优势是其性能。由于SWT直接调用了操作系统的API,因此在运行速度和资源消耗上通常优于Swing。同时,SWT的原生外观意味着应用程序在不同的操作系统上看起来和感觉就像本地应用一样,这...

    基于swt的小软件

    本项目"基于SWT的小软件"是一个用于学习SWT的中级参考示例,适合对Java GUI有一定基础的开发者进一步提升SWT应用开发技能。通过这个小软件,我们可以学习到如何利用SWT创建复杂的用户界面、处理用户交互以及实现特定...

    SWTDesigner_v7.2.0_for_Eclipse3.5

    SWT是IBM贡献给开源社区的一个Java GUI库,它允许开发者创建与操作系统原生界面风格一致的程序,而JFace则建立在SWT之上,提供更高级别的抽象和便利性。 SWTDesigner是GUI开发人员的得力助手,它简化了SWT和JFace...

    Java swt完整教程

    SWT是Java AWT和Swing之外的一个选择,它使用本地系统资源来创建GUI组件,提供更高的性能和更好的交互性。SWT通过JNI(Java Native Interface)与操作系统进行通信,因此在不同平台上运行时能保持一致的用户体验。 ...

Global site tag (gtag.js) - Google Analytics