王朝网络
分享
 
 
 

使用Eclipse进行SWT编程(5)

王朝java/jsp·作者佚名  2006-01-31
宽屏版  字体: |||超大  

8.3. 组合窗口组件Composite Widgets

组合窗口组件可以容纳其他的组合窗口组件。Composite类是组合窗口组件的父类。

图 10. Composite可以容纳其他的组合类

组合类可以容纳其他的组合类。这种容纳关系是用一个组合窗口组件类的构造函数来建造的。与Swing相比,SWT没有add() 方法;作为代替,你必须使用构造函数来建立包容关系结构。

正如图10中所看到的,Shell类也是一个组合类。也就是说,Shell对象,可以容纳其他的组合类。

组合类是可以卷起的,也就是说可以使用SWT.H_SCROLL和SWT.V_SCROLL常量给组合窗口组件加上滚动条。

8.3.1. Table窗口组件

Table窗口组件可以显示一批字符串项或者图片。与其他的组合窗口组件相比,不能给table窗口组件增加组合控件。Table窗口组件的子构件必须是TableItem类型的。

图 11. Table窗口组件

表7中的常量可以用于table窗口组件

表 7. SWT Table style bit常量

SWT.MULTI

SWT.SINGLE

使能够进行单一或者多项选择

SWT.FULL_SELECTION

使能够进行行全选

SWT.CHECK

在每一行的开始显示一个选择框

源代码 8 中的代码片断表明了含有两列的table组件的使用方法

源代码 8. Table窗口组件例子

final Table table =

new Table(shell,SWT.SINGLE);

TableColumn col1 =

new TableColumn(table,SWT.LEFT);

col1.setText("Coloumn 1");

col1.setWidth(80);

TableColumn col2 =

new TableColumn(table,SWT.LEFT);

col2.setText("Coloumn 2");

col2.setWidth(80);

TableItem item1 = new TableItem(table,0);

item1.setText(new String[]{"a","b"});

TableItem item2 = new TableItem(table,0);

item2.setText(new String[]{"a","b"});

table.setHeaderVisible(true);

table.setLinesVisible(true);

8.3.2. Combo(组合框)窗口组件

Combo窗口组件允许用户从值列表中选择一个值或者随意输入一个新值。组合框(combo)类似于列表组件,却使用了有限的空间。

虽然组合框是组合性质的,但是对它增加子元素是没有意义的。它的元素必须是String类型。一元素可以使用Combo类中定义的add(String element)方法来添加到组合框中。

图 12. 不同样式的组合框

下边的SWT常量可以用于Combo窗口组件:

Table 8. SWT Combo style bit constants

SWT.DROP_DOWN

下拉式组合框

SWT.READ_ONLY

只读组合框

SWT.SIMPLE

简单的组合框(非下拉式组合框)。如图11所示

下边的例子说明了Combo组件的使用:

Source 9. Combo example

final Combo combo =

new Combo(shell,SWT.DROP_DOWN);

for (int i = 1; i < 11; i++)

{

combo.add(i+".) element ");

}

combo.setText("Text");

combo.addSelectionListener(

new SelectionAdapter()

{

public void widgetSelected(SelectionEvent e)

{

System.out.println("Selection:"+

combo.getText());

}

}

);

8.3.3. Tree窗口组件

Tree窗口组件描绘了树中项的可选择层次结构。虽然Tree类是组合的,但是不能对它增加组合类对象。Tree类的子项必须是ThreeItem类型。

图 13. 不同样式的Tree窗口组件

下表是Tree组件常量的列表。

表 9. SWT Tree style bit 常量

SWT.SINGLE

SWT.MULTI

允许单选或者多选

SWT.CHECK

在每个节点的开始显示一个选择框。

下边是一个简单的Tree组件例子。

源代码 10. Tree例子

final Tree tree =

new Tree(shell,SWT.SINGLE);

for (int i = 1; i < 11; i++)

{

final TreeItem item1 =

new TreeItem(tree,SWT.NULL);

item1.setText("node "+i);

for (int j = 1; j < 6; j++)

{

final TreeItem item11 =

new TreeItem(item1,SWT.NULL);

item11.setText("node "+i+"."+j);

}

}

tree.addSelectionListener(

new SelectionAdapter()

{

public void widgetSelected(SelectionEvent e)

{

System.out.println("Selection:"+

tree.getSelection()[0]);

}

}

);

8.3.4. TabFolder

TabFolder组件允许用户从一些页面中选择一页。虽然它是组合的,但是它不能增加其他的组合窗口组件。加到TabFolder的组件必须是TabItem类型。Tab的内容可以使用TabItem的setControl(Control control) 方法来设置。

图 14. TabFolder窗口组件

一个简单的TabFolder例子:

源代码 11. TabFolder例子

final TabFolder tabFolder =

new TabFolder( shell, SWT.BORDER);

for (int i=1; i<5; i++)

{

// create a TabItem

TabItem item =

new TabItem( tabFolder, SWT.NULL);

item.setText( "TabItem " + i);

// create a control

Label label =

new Label( tabFolder, SWT.BORDER);

label.setText( "Page " + i);

// add a control to the TabItem

item.setControl( label );

}

8.3.5. CoolBar窗口组件

CoolBar窗口组件提供了一个可以在动态摆放空间上增加项的区域。你可以增加一个或多个ToolBar组件到CoolBar上。一个CoolBar可一容纳一个或多个CoolItems。虽然是一个组合窗口组件,但是不能把其他组合类加到它上。CoolBar的子元素必须是CoolItem类型。

图 15. Coolbar窗口组件

CoolBar窗口组件使用的例子:

Source 12. CoolBar example

CoolBar coolBar =

new CoolBar(shell, SWT.BORDER);

coolBar.setLayoutData(

new FillLayout());

// create a tool bar which it

// the control of the coolItem

for (int k = 1; k <3; k++)

{

ToolBar toolBar =

new ToolBar(coolBar, SWT.FLAT);

for (int i = 1; i < 5; i++)

{

ToolItem item =

new ToolItem(toolBar, SWT.NULL);

item.setText("B"+k+"."+i);

}

// Add a coolItem to a coolBar

CoolItem coolItem =

new CoolItem(coolBar, SWT.NULL);

// set the control of the coolItem

coolItem.setControl(toolBar);

// You have to specify the size

Point size =

toolBar.computeSize( SWT.DEFAULT,

SWT.DEFAULT);

Point coolSize =

coolItem.computeSize (size.x, size.y);

coolItem.setSize(coolSize);

}

8.4. 具有子项控件的概述

有些控件接受子组件作为子项。如,一个组合组件接受组合组件。有些组件只需要item(项)这样的组件如表10所列:

表 10. 有项的组件

窗口组件

描述

CoolBar

CoolItem

项是可选择的,动态的摆放在CoolBar的区域上。

Menu

MenuItem

项是菜单下的选择。

TabFolder

TabItem

项是TabFolder中的Tab

Table

TableItem

TableColumn

项是表中的行。

ToolBar

ToolItem

项是工具栏上的按钮。

Tree

TreeItem

项是树上的节点。

结论

SWT是Eclipse用户接口的核心部分。Eclipse平台基于SWT库。要扩展你的SWT知识,你可以下载SWT网站上的SWT例子。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有