首页 > 新闻系统 > 编程天地 > 文章正文

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

2008-02-15 11:08:25 来源:IT168 作者:阿甘 点击:
SWT中还有一些常用的组件,它们可以使组件更有表现力,且称之为展现组件,它们在SWT开发中也是不可缺少的,包括菜单组件、工具栏组件ToolBar和ToolItem、工具栏组件CoolBar和CoolItem、滚动组件Slider、刻度组件Scale和进度条组件ProgressBar等。

 
  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();
}
}
9 7 3 1 2 3 4 4 8 :

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

本周软件下载排行

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203