SWT:仿Eclipse选项卡

时间:2022-02-04 06:28:06
public static void showEcliplseTab(final Shell shell)
 {
  Image image = new Image(shell.getDisplay(), "D:\\Program Files\\eclipseRcp\\plugins\\org.eclipse.platform.source_4.2.1.v201209141800\\eclipse32.png");
  shell.setText("仿Eclipse编辑区的选项卡");
  //创建自定义选项卡对象
  final CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
  //设置选项卡的布局,通过布局的设置呈现出最大化和最小化的外观
  folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
  //设置复杂的选项卡,也就是带有圆角的选项卡标签
  folder.setSimple(false);
  //设置未选中标签,图标和“关闭”按钮的状态
  folder.setUnselectedImageVisible(true);
  
  //设置前景色和背景色
  folder.setSelectionForeground(shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));
  folder.setSelectionBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLUE));
  //显示"最大化"和"最小化"按钮
  folder.setMaximized(true);
  folder.setMaximizeVisible(true);
  folder.setMinimized(true);
  folder.setMinimizeVisible(true);
  
  //创建选项卡标签对象
  for (int i = 1; i < 5; i++)
  {
   CTabItem item = new CTabItem(folder, SWT.CLOSE);
   item.setText("选项卡" + i);
   item.setImage(image);
   //每个选项卡中放置一个Text文本框
   Text text = new Text(folder, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
   //文本框中的文字带有\n表示,显示时换到下一行
   text.setText("这是第" + i + "页:\n该选项卡仿照Eclipse设计\n最大化和最小化都可以使用");
   item.setControl(text);
  }
  
  //注册选项卡事件
  folder.addCTabFolder2Listener(new CTabFolder2Adapter(){
   //当单击"最小化"按钮时触发的事件
   public void minimize(CTabFolderEvent event){
    //设置选项卡的状态为最小化,选项卡的状态决定显示在右上角的窗口按钮,
    folder.setMinimized(true);
    //改变选项卡的布局,呈现最小化状态
    folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    //刷新布局,否则重新设置的布局将不起作用
    shell.layout(true);
   }
   
   //当单元击“最大化”按钮时触发的事件
   public void maximize(CTabFolderEvent event){
    folder.setMaximized(true);
    folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    shell.layout(true);
   }
   
   //当单击"还原"按钮时触发的事件
   public void restore(CTabFolderEvent event)
   {
    folder.setMinimized(false);
    folder.setMaximized(false);
    folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    shell.layout(true);
   }
  });
 }