Eclipse开发经典教程之展现组件

SWT中还有一些常用的组件,它们可以使组件更有表现力,且称之为展现组件,它们在SWT 开发中也是不可缺少的,包括菜单组件、工具栏组件ToolBar和ToolItem、工具栏组件 CoolBar和CoolItem、滚动组件Slider、刻度组件Scale和进度条组件ProgressBar等。

菜单组件

在程序中,菜单是提供信息比较好的方式,SWT中通过Menu和MenuItem实现菜单和菜单项 ,在程序中添加菜单的步骤如下。

(1)创建Menu对象,并指定创建的样式,例如“menuBar = new Menu(shell, SWT.BAR); ”。

(2)创建MenuItem对象,并指定创建样式,例如“fileEnglishItem = new MenuItem (fileMenu, SWT.RADIO);”。

(3)设置Menu和MenuItem的关联(Menu中还可以有子Menu),例如“fileMenuHeader. setMenu(fileMenu);”。

(4)添加MenuItem的事件监听器,例如“fileEnglishItem.addSelectionListener(new RadioItemListener());”。

为了更好地掌握菜单,下面通过一个实例演示如何创建菜单,代码如例程1所示。

例程1 MenuExample.java

/**
* 为了节省篇幅,所有的import类已经被注释
* 读者可以通过ctrl+shift+o快捷键,自动引入所依赖的类
* 如果有问题可发邮件到ganshm@gmail.com
* */
public class MenuExample {
Display display;
Shell shell;
Menu menuBar, fileMenu, editMenu;
MenuItem fileMenuHeader, editMenuHeader;
MenuItem fileExitItem, fileSaveItem, fileEnglishItem, fileGermanItem,
editCopyItem;
Text text;
public MenuExample() {
display = new Display();
shell = new Shell(display);
shell.setText("Menu Example");
shell.setSize(300, 200);
text = new Text(shell, SWT.BORDER);
text.setBounds(80, 50, 150, 25);
//添加主菜单项
menuBar = new Menu(shell, SWT.BAR);
//添加一级子菜单
fileMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
fileMenuHeader.setText("&File");
//添加一级子菜单的菜单项
fileMenu = new Menu(shell, SWT.DROP_DOWN);
fileMenuHeader.setMenu(fileMenu);
fileSaveItem = new MenuItem(fileMenu, SWT.PUSH);
fileSaveItem.setText("&Save");
fileEnglishItem = new MenuItem(fileMenu, SWT.RADIO);
fileEnglishItem.setText("English");
fileGermanItem = new MenuItem(fileMenu, SWT.RADIO);
fileGermanItem.setText("German");
fileExitItem = new MenuItem(fileMenu, SWT.PUSH);
fileExitItem.setText("E&xit");
editMenuHeader = new MenuItem(menuBar, SWT.CASCADE);
editMenuHeader.setText("&Edit");
editMenu = new Menu(shell, SWT.DROP_DOWN);
editMenuHeader.setMenu(editMenu);
editCopyItem = new MenuItem(editMenu, SWT.PUSH);
editCopyItem.setText("&Copy");
//添加菜单项的事件监听器
fileExitItem.addSelectionListener(new MenuItemListener());
fileSaveItem.addSelectionListener(new MenuItemListener());
editCopyItem.addSelectionListener(new MenuItemListener());
fileEnglishItem.addSelectionListener(new RadioItemListener());
fileGermanItem.addSelectionListener(new RadioItemListener());
shell.setMenuBar(menuBar);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
class MenuItemListener extends SelectionAdapter {
public void widgetSelected(SelectionEvent event) {
text.setText("You selected " + ((MenuItem) event.widget).getText());
if (((MenuItem) event.widget).getText().equals("E&xit")) {
shell.close();
}
}
}
class RadioItemListener extends SelectionAdapter {
public void widgetSelected(SelectionEvent event) {
MenuItem item = (MenuItem) event.widget;
text.setText(item.getText() + " is on.");
}
}
public static void main(String[] args) {
MenuExample menuExample = new MenuExample();
}
}

时间: 2024-11-02 18:27:34

Eclipse开发经典教程之展现组件的相关文章

Eclipse开发经典教程之常用SWT组件

在介绍组件之前,有必要介绍一下Control类.Control类是一个抽象类,它是所有窗口组 件(即在Windows中能获得句柄的部件)的基类. Control类的继承关系 Control类是为继承而设计的,所有窗口组件都继承于Control类,如图1所示. 开发经典教程之常用SWT组件-swt组件"> 图1 Control类的继承关系 Control的一个实例代表Windows中的一个窗口组件,它中有窗口名柄属性,但是在程序中 不能够直接访问. Control类的常用方法 Control

Eclipse开发经典教程之常用快捷键

想成为编程"高手"吗?如果说有捷径的话,不妨花点时间在Eclipse快捷键的使用上. 作为一个使用Eclipse进行Java开发的编程"高手",一些常用的快捷键是必须掌握的,它不 但能够大大加快程序编写.调试和定位Bug的速度,还能让领导感觉到你的"打字速度",何 乐而不为呢?尝试一下全键盘操作的魅力吧. 本节将从笔者的亲身经验总结出一些快捷键,并对快捷键进行分类,而且按笔者的喜好进 行排列,并加上相关的解释,希望读者能用心去体会. 编辑相关快捷

Eclipse开发经典教程之插件安装

Eclipse 是一个开源的.可扩展的集成开发环境,已经吸引了业界的很多注意力,而且 Eclipse 的支持者源源不断.Eclipse有着非常强大的功能,对于编码.调试.重构.单元测 试等都提供了完美的实现. Eclipse 可以与任何一种IDE匹敌,甚至比它们还要好.Eclipse 有代码补足.代码模板 的功能,以及对重构.Ant.CVS 和 JUnit 的支持.除了这些基本功能之外,Eclipse 的优 点之一就是它的源代码是开放的,可扩展性很好,可以扩充很多插件,开源插件和商业插件 都可以

Eclipse开发经典教程之TreeViewer组件

TreeViewer构建步骤 TreeViewer中主要通过内容提供器(ITreeContentProvider)和标签提供器 (ILabelProvider)组织树节点的内容和显示的信息.TreeViewer的构建步骤如下. 1. 创建TreeViewer对象,例如"TreeViewer tv = new TreeViewer(composite);". 2. 设定内容管理器,例如"tv.setContentProvider(new FileTreeContentProvi

Eclipse开发经典教程之SWT布局

在Java中,GUI程序开发的目标之一是跨平台,而每种类型操作系统对屏幕的定义不一样 ,所以Swing中引入了布局的概念,对子组件的位置和大小等信息进行定义.SWT中也采用了 布局方式,用户可使用布局来控制组件中元素的位置和大小等信息. 另外,如果组件 没有设置布局信息,也可以通过坐标进行相对定位.在介绍Control类的时候,其中有一个方 法"setBounds (int x, int y, int width, int height)"可以指定组件相对于 父组件的位置和组件的大小.

《Android开发基础教程》——6.1节ImageView界面组件——显示图像

6.1 ImageView界面组件--显示图像Android开发基础教程ImageView界面组件主要用以显示图像,让显示画面更加美观和生动. 6.1.1 ImageView的语法与常用属性1.ImageView的语法在Andrioid程序中使用图像图片有以下几个注意事项. (1)图像图片必须根据使用的分辨率,分别放置在.或中.但如果没有那么讲究,可以直接放置在的目录中. (2)程序的图像文件格式可以使用png.jpg或gif,要注意的是文件命名时无论文件名或扩展名都必须使用小写字母,否则执行时

《Android开发基础教程》——6.3节GridView界面组件——表格展示

6.3 GridView界面组件--表格展示 Android开发基础教程 GridView界面组件是在表格中放置图片进行展示,在设置时的重点是规定每一行的字段数,图片展示时会根据列自动折行显示. 6.3.1 GridView语法示例与常用的属性 例如:我们要创建一个名称为"GridView01"的GridView组件,每行有3张图片,Gallery组件和边界的距离是20dp,图片的水平和垂直间隔是6dp,宽度填满整个屏幕,高度根据图片高度调整. <GridView android

Vue.js组件使用开发实例教程_javascript技巧

组件 组件可以扩展HTML元素,封装可重用的代码,在较高的层面上,组件是自定义元素,vue.js的编译器为它添加特殊功能,在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展. Vue.js的组件可以理解为预先定义好了行为的ViewModel类.一个组件可以预定义很多选项,但最核心的是以下几个: 模板(template):模板声明了数据和最终展现给用户的DOM之间的映射关系. 初始数据(data):一个组件的初始数据状态.对于可复用的组件来说,这通常是私有的状态. 接受的外部参数(p

.NET开发邮件发送功能的全面教程(含邮件组件源码)

原文 http://www.cnblogs.com/heyuquan/p/net-batch-mail-send-async.html    今天,给大家分享的是如何在.NET平台中开发"邮件发送"功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         邮件发送相关.NET类库 3)         介绍我开发的一个发送邮件的小组件(MailHelper) 4)         MailHelper