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();
}
}