使用Eclipse进行SWT编程(5)

8.3. 组合窗口组件Composite Widgets

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

                            

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

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

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

组合类是可以卷起的,也就是说可以使用SWT.H_SCROLLSWT.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的内容可以使用TabItemsetControl(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

项是树上的节点。

结论

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

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值