`
xiaojiit
  • 浏览: 134178 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Eclipse开发经典教程:SWT布局(1)

    博客分类:
  • Java
阅读更多

Java 中,GUI程序开发的目标之一是跨平台,而每种类型操作系统对屏幕的定义不一样,所以Swing中引入了布局的概念,对子组件的位置和大小等信息进行定义。SWT中也采用了布局方式,用户可使用布局来控制组件中元素的位置和大小等信息。

另外,如果组件没有设置布局信息,也可以通过坐标进行相对定位。在介绍Control类的时候,其中有一个方法“setBounds (int x, int y, int width, int height)”可以指定组件相对于父组件的位置和组件的大小。在这种方式下,父组件大小和其他信息的改变不会对当前组件有影响。复合组件常常包含多个控 件,可以使用以下两种方法安排这些控件。

(1)绝对定位:为每个控件设置明确的 X 和 Y 位置(setBounds),并通过代码设置一定的宽度和高度。
(2)托管定位:每个控件的X、Y、宽度和高度都是通过 LayoutManager 设置的。

在多数情况下,应该选择使用 LayoutManagers,因为可以很容易地调整它们来适应可变大小的 GUI。SWT 提供了一些常用的布局管理器供用户使用;在布局管理器中,每当重新设置复合组件的大小时,都需要进行定位。

布局管理器常常是专为某一个复合组件设计的。一些布局管理器只使用它们自身的参数就可以控制,而另一些布局管理器还需要其他参数(LayoutData),该参数是在设置布局管理器的复合组件中的每个控件上指定的。SWT中常用的布局管理器有如下一些。

●FillLayout:子组件将以相同的大小填充到父组件中。
● RowLayout:子组件将在父组件上一行或几行显示(设置相应的属性值,子组件会自动换行)。
●GridLayout:网格式布局,子组件可以指定占用父组件中几个格,以及组件填充哪几个网格。
● FormLayout:可以通过FormAttachment以父组件或子组件的边作为相对位置,进行精确布局。

为组件添加布局信息的步骤如下。
1. 创建布局(Layout)类。
2. 通过窗口组件的setLayout方法设置相应的布局类。
3. 设置子组件的布局信息。

当窗口组件设置了布局信息后,窗口组件显示的时候将会调用相应的布局类对窗口组件的子组件进行布局、定位和计算子组件大小的操作,从而使窗口组件以更好的方式显示在父组件中。下面将介绍Eclipse中提供的几种常用的布局方式。

FillLayout布局

FillLayout是非常简单的一种布局方式,它会以同样大小对父组件中的子组件进行布局,这些子组件将以一行或一列的形式排列。

一般来说,用户可以在任务栏、工具栏中放置FillLayout布局,通过FillLayout布局对子组件进行定位,也可以当子组件只有一个组件时,通过FillLayout布局填充整个父组件的空间。

FillLayout的风格

FillLayout布局中,可以把子组件按水平或垂直的方式进行排列,这些风格是当创建FillLayout实类时以参数形式指定的,如表1所示。

 

FillLayout布局实例

FillLayout是简单而且很常用的布局,下面通过实例展示FillLayout的布局效果,代码如例程1所示。
例程1 FillLayoutSample.java

 

 **
* 为了节省篇幅,所有的import类已经被注释
* 读者可以通过ctrl+shift+o快捷键,自动引入所依赖的类
* 如果有问题可发邮件到ganshm@gmail.com
* */
public class FillLayoutSample {
Display display = new Display();
Shell shell = new Shell(display);
public FillLayoutSample() {
//新建FillLayout布局,设置子组件与水平方式排列
FillLayout fillLayout = new FillLayout(SWT.HORIZONTAL);
//指定子组件的上、下边距为多少像素
fillLayout.marginHeight = 25;
//指定子组件的左、右边距为多少像素
fillLayout.marginWidth = 25;
//指定子组件之间距离为多少像素
fillLayout.spacing = 10;
//设定父组件的布局方式
shell.setLayout(fillLayout);
Button button1 = new Button(shell, SWT.PUSH);
button1.setText("button1");
Button button2 = new Button(shell, SWT.PUSH);
button2.setText("button number 2");
Button button3 = new Button(shell, SWT.PUSH);
button3.setText("3");
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void main(String[] args) {
new FillLayoutSample();
}
}

程序中通过marginHeight、marginWidth和spacing指定了边距和子组件的间距,程序运行效果如图1所示。


图1 FillLayout布局实例

 

RowLayout布局

相对于FillLayout来说,RowLayout比较灵活,功能也比较强。用户可以设置布局中子元素的大小、边距、换行及间距等属性。

RowLayout的风格

RowLayout中可以相关的属性设定布局的风格,用户可以通过“RowLayout.属性”的方式设置RowLayout的布局风格,RowLayout中常用的属性如下。

●Wrap:表示子组件是否可以换行(true为可换行)。
●Pack:表示子组件是否为保持原有大小(true为保持原有大小)。
●Justify:表示子组件是否根据父组件信息做调整。
●MarginLeft:表示当前组件距离父组件左边距的像素点个数。
●MarginTop:表示当前组件距离父组件上边距的像素点个数。
●MarginRight:表示当前组件距离父组件右边距的像素点个数。
●MarginBottom:表示当前组件距离父组件下边距的像素点个数。
●Spacing:表示子组件之间的间距像素点个数。

另外,RowLayout可以通过RowData设置每个子组件的大小,例如“button.setLayoutData (new RowData(60, 60))”将设置buton的大小为(60,60),RowLayout风格如表2所示。

 

 

RowLayout布局实例

RowLayout是很常用的布局,而且不太复杂,下面通过实例展示RowLayout的布局效果,代码如例程2所示。
例程2 RowLayoutExample.java

 

 public class RowLayoutExample {
Display display;
Shell shell;
RowLayoutExample() {
display = new Display();
shell = new Shell(display);
shell.setSize(250, 150);
shell.setText("A RowLayout Example");
//新建RowLayout布局
RowLayout rowLayout = new RowLayout();
//子组件保持原有大小
rowLayout.pack = true;
//子组件可换行
rowLayout.wrap = true;
//根据父组件信息调整位置
rowLayout.justify = true;
//左边距为30像素
rowLayout.marginLeft = 30;
//上边距为30像素
rowLayout.marginTop = 30;
//设定父组件RowLayout布局
shell.setLayout(rowLayout);
final Text t = new Text(shell, SWT.SINGLE | SWT.BORDER);
final Button b = new Button(shell, SWT.BORDER);
final Button b1 = new Button(shell, SWT.BORDER);
//设置子组件大小
b1.setLayoutData(new RowData(60, 60));
b.setText("OK");
b1.setText("Cancel");
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
public static void main(String[] argv) {
new RowLayoutExample();
}
}

程序中指定了边距和子组件的间距,以及子组件大小的信息,程序运行效果如图2所示。


图2 RowLayout布局实例

 

分享到:
评论

相关推荐

    Eclipse开发经典教程:SWT布局

    Eclipse开发经典教程,SWT中采用了布局方式,用户可使用布局来控制组件中元素的位置和大小等信息。

    Eclipse开发经典教程:常用SWT组件.pdf

    ### Eclipse开发经典教程:深入解析SWT组件 #### Control类:窗口组件的基石 在探讨SWT(Standard Widget Toolkit)组件之前,理解`Control`类的重要性不容忽视。`Control`作为一个抽象类,充当了所有窗口组件的...

    Eclipse开发经典教程

    通过学习这个经典教程,开发者不仅能熟练使用Eclipse,还能掌握SWT布局的基本原理和技巧,从而提升开发效率,创建出高效、美观的Java应用程序。无论是编写插件、创建自定义界面还是进行代码重构,这些知识都将...

    java eclipse swt教程

    1. **SWT组件**:SWT提供了各种基本的GUI组件,如按钮(Button)、文本框(Text)、列表(List)、树(Tree)、表格(Table)等。了解这些组件的用法是创建用户界面的基础。 2. **布局管理**:在SWT中,布局...

    Java图形界面开发:SWT全接触.pdf

    ### Java图形界面开发:SWT全接触 #### SWT简介 **SWT**(Standard Widget Toolkit)是由Eclipse基金会开发的一套用于构建Java图形用户界面(GUI)的应用程序接口(API)。与传统的Java图形界面开发工具包如AWT...

    SWT开发布局(讲解Eclipse的开发插件)

    【SWT布局详解:Eclipse开发插件使用】 在Java平台上,SWT(Standard Widget Toolkit)是一种用于构建图形用户界面(GUI)的库,它是Eclipse IDE中的核心组成部分。SWT提供了一系列的基础控件和布局管理器,使得...

    swt design for eclipse 3.2

    1. **SWT组件**:SWT提供了一系列的基本组件,如按钮(Button)、文本框(Text)、列表(List)、表格(Table)、树形视图(Tree)等,开发者可以使用这些组件来构建复杂的用户界面。每个组件都有丰富的API供开发者...

    eclipse插件开发: rcp/swt相关资料

    RCP(Rich Client Platform)和SWT(Standard Widget Toolkit)是Eclipse插件开发中的核心概念。 RCP是Eclipse提供的一种用于构建复杂桌面应用程序的框架。它基于OOP(面向对象编程)原则,提供了可扩展性、模块化...

    eclipse开发SWT应用

    5. **布局管理**:SWT提供了多种布局管理器,如`GridLayout`、`FillLayout`、`RowLayout`等,它们用于决定控件在Shell中的排列方式。通过`setLayout`方法设置Shell或控件的布局。 6. **运行和调试**:在Eclipse中,...

    Eclipse SWT 开发参考

    - **轻量级封装**:SWT对Java GUI库进行了轻量级封装,使其更加贴近本地操作系统的外观和感觉。 - **性能优化**:利用JNI技术,SWT能够更好地处理GUI应用程序中的性能问题。 - **跨平台支持**:虽然SWT具有本地化的...

    SWT开发教程1

    4. SWT布局管理: SWT提供了多种布局管理器,如FillLayout、GridLayout、FormLayout等,它们决定了组件在容器中的排列方式。通过合理地使用布局管理器,开发者可以创建出适应不同屏幕尺寸和分辨率的界面。 5. SWT...

    Java SWT 图形用户界面教程 PDF

    - **与 Qt、GTK+ 比较**:SWT 提供了Java接口,而Qt和GTK+则需要使用C++或C进行编程,对于Java开发者来说,SWT更易用。 8. **实战演练**: 通过阅读本教程,读者将有机会实践创建简单的SWT应用程序,例如“Hello,...

    org.eclipse.swt相关所有jar包,

    【描述】中的"org.eclipse.swt"是指Eclipse Standard/Widgets工具包,这是一个开源的Java库,允许开发人员在多种平台上创建原生用户界面。它特别强调了JAVA调用IE内核来实现一个内置的浏览器功能,这使得开发者能够...

    Eclipse插件开发教程PPT Eclipse插件开发教程PPT

    Eclipse插件开发教程PPT是针对开发者设计的一份详细教学材料,旨在帮助他们了解并掌握如何利用Eclipse平台进行插件开发,从而定制自己的开发环境。以下是基于这个教程的几个关键知识点: 1. **Eclipse插件体系结构*...

    eclipse -- swt

    1. **高性能**:SWT直接操作操作系统提供的API,避免了Java AWT和Swing中的抽象层,从而实现了更高的运行效率。 2. **原生外观**:由于SWT直接与操作系统接口,因此生成的界面具有与操作系统一致的风格,用户界面...

    eclipse官方网站上的SWT例子(用306个)

    1. **窗口和布局**:SWT提供各种窗口组件,如Shell、Composite、Group等,以及布局管理器,如FillLayout、GridLayout、MigLayout等,用于组织和控制控件的排列方式。 2. **基本控件**:包括按钮(Button)、文本框...

    Eclipse+SWTJFace开发实战精解,SWT例子,Eclipse开发入门与项目实践+源代码

    2. **SWT详解**:SWT是Java平台上的一个GUI库,它是Java AWT和Swing的替代品,提供了更接近于原生操作系统界面的用户体验。SWT通过直接操作操作系统API来创建窗口、按钮、文本框等控件,因此其性能优于纯Java实现的...

    org.eclipse.swt.win32

    org.eclipse.swt.browser.HelperAppLauncherDialog_1_9.class org.eclipse.swt.browser.IE.class org.eclipse.swt.browser.InputStream.class org.eclipse.swt.browser.LocationAdapter.class org.eclipse.swt....

    eclipse配置SWT(4/4)

    1. **原生外观**:SWT与操作系统紧密集成,使得Java GUI应用程序看起来和行为都与平台上的其他应用程序相似,提供了原生的外观和感觉。 2. **高性能**:由于SWT直接操作系统的图形API,因此它的性能通常优于使用...

Global site tag (gtag.js) - Google Analytics