SWT Tabbed Folder

SWT通过TabFolder和TabItem两个类来完成Tabbed Folder。
1.创建TabFolder的对象

TabFolder tf=new TabFolder(s,SWT.NONE);

TabFolder本身没有内含的样式,但是还必须传入置放样式的空间,所以SWT.NONE是为此目的而使用的。

2.创建单独的Tab
    每个Tab都是由TabItem类的对象来表示的。创建出TabItem的新的对象给每个folder并将它加入到之前创建的TabFolder对象上。

TabItem ti1=new TabItem(tf,SWT.NONE);
ti1.setText("Tab one");

传给TabItem的第一个参数是TabFolder的引用,因为TabItem也没有接受样式属性,所以传入SWT.NONE

3.将Widget加入到Tab中
    创建Tabbed Folder界面的最后一步是将control加入tab页中。

ti1.setControl(new Button(tf,SWT.PUSH));

可以看出传给setControl函数的第一个参数是TabFolder而不是TabItem,这是因为TabItem并不是从Composite继承而来的,且无法作为其他widget的容器。放置于TableItem的Control实际上是位于TabFolder中,并且只是在用户切换页面的时候跟着切换成显示或者隐藏而已。

4.完整的实例

import org.eclipse.swt.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;


public class TabbedShellExample {
 Display d;
 Shell s;
 TabbedShellExample(){
  d=new Display();
  s=new Shell(d);
  s.setSize(350, 300);
  s.setText("Tabbed Shell!");
  s.setLayout(new FillLayout());
  
  TabFolder tf=new TabFolder(s,SWT.NONE);
  
  TabItem ti1=new TabItem(tf,SWT.NONE);
  ti1.setText("Option Group");
  ti1.setControl(new GroupComposite(tf,SWT.SHADOW_ETCHED_IN));
  
  TabItem ti2=new TabItem(tf,SWT.NONE);
  ti2.setText("Grid    ");
  ti2.setControl(new Button(tf,SWT.PUSH));
  
  TabItem ti3=new TabItem(tf,SWT.NONE);
  ti3.setText("Text   ");
  Composite c1=new Composite(tf,SWT.BORDER);
  c1.setLayout(new FillLayout());
  Text t=new Text(c1,SWT.BORDER|SWT.MULTI|SWT.WRAP|SWT.V_SCROLL);
  ti3.setControl(c1);
  
  TabItem ti4=new TabItem(tf,SWT.NONE);
  ti4.setText("Settings");
  Composite c2=new Composite(tf,SWT.NONE);
  c2.setLayout(new RowLayout());
  Text t2=new Text(c2,SWT.BORDER|SWT.SINGLE|SWT.WRAP|SWT.V_SCROLL);
  Button b=new Button(c2,SWT.PUSH|SWT.BORDER);
  b.setText("Save");
  ti4.setControl(c2);
  tf.setSelection(3);
  
  s.open();
  while(!s.isDisposed())
   if(!d.readAndDispatch())
    d.sleep();
  d.dispose();
  
  
 }
 public static void main(String args[]){
  new TabbedShellExample();
 }
}

class GroupComposite extends Composite{
 
 final Button b1,b2,b3;
 
 public GroupComposite(Composite arg0, int arg1) {
  super(arg0, SWT.NO_BACKGROUND);
  this.setSize(110,75);
  this.setLayout(new FillLayout());
  final Group g=new Group(this,arg1);
  g.setSize(110,75);
  g.setText("Options Group");
  
  b1=new Button(g,SWT.RADIO);
  b1.setBounds(10, 20,85, 15);
  b1.setText("Option One");
  b2=new Button(g,SWT.RADIO);
  b2.setBounds(10, 35, 85, 15);
  b2.setText("Option Two");
  b3=new Button(g,SWT.RADIO);
  b3.setText("Option Three");
  b3.setBounds(10, 50,100,15);
  // TODO Auto-generated constructor stub
 }
 public String getSelected(){
  if(b1.getSelection())return "option one";
  if(b2.getSelection())return "option two";
  if(b3.getSelection())return "option three";
  return "None Selection";
 }
}

5.设定默认的Tab

要强制某个Tab显示在前端,可以用方法:tf.setSelection(i);
要判断当前所选取的是哪个tab,可以用方法:tf.getSelectionIndex();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值