import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.*;
public class C{
public static void main(String[] args){
Display display=new Display();
//创建图标对象,该图片对象用于设置选项卡上的图标
Image image=new Image(display,"G:\\1.png");
final Shell shell=new Shell(display);
shell.setText("仿照Eclipse编辑区选项卡");
shell.setLayout(new GridLayout());
//创建自定义选项卡对象
final CTabFolder tabFolder=new CTabFolder(shell,SWT.BORDER);
//设置选项卡的布局,通过布局的设置呈现最大化和最小化的外观__?????????
tabFolder.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false));
//设置复杂的选项卡,也就是带有圆角的选项卡标签
tabFolder.setSimple(false);
//设置未选中标签,图标和关闭按钮的状态
tabFolder.setUnselectedImageVisible(true);
tabFolder.setUnselectedCloseVisible(true);
//设置前景色和背景色
tabFolder.setSelectionForeground(display.getSystemColor(SWT.COLOR_WHITE));
tabFolder.setSelectionBackground(display.getSystemColor(SWT.COLOR_BLUE));
//自定义选项卡还可以显示最大化最小化按钮,没有做事件处理的话,他们是无作用的
tabFolder.setMaximizeVisible(true);
//显示最小化按钮
tabFolder.setMinimizeVisible(true);
//为选项卡添加选项标签
for(int i=0;i<4;i++){
CTabItem item = new CTabItem(tabFolder,SWT.CLOSE);
//设置选项卡标签的文本
item.setText("选项卡"+i);
//设置选项卡所控制的对象
Text text=new Text(tabFolder,SWT.MULTI|SWT.V_SCROLL|SWT.H_SCROLL);
text.setText("这是第"+i+"页:\n该选项卡仿照Eclipse设计\n最大化和最小化按钮都可以使用");
//将选项卡标签与所控制的控件关联
item.setControl(text);
}
//注册选项卡事件
tabFolder.addCTabFolder2Listener(new CTabFolder2Adapter(){
//当单击最小化按钮时候触发的事件
public void minimize(CTabFolderEvent event){
//设置选项卡的状态为最小化,选项卡的状态决定显示在右上角的窗口按钮
tabFolder.setMinimized(true);
//改变选项卡的布局。呈现最小化的状态
tabFolder.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false));
//刷新布局。否则重新设置的布局不起作用
shell.layout(true);
}
public void maximize(CTabFolderEvent event){
//实现原理:当最大化时,可以设置布局为水平和垂直充满整个窗口,这样就达到了方法的目的。
//在本程序中使用了网格式(GridLayout)布局。
//设置选项卡的状态为最小化,选项卡的状态决定显示在右上角的窗口按钮
tabFolder.setMaximized(true);
//改变选项卡的布局。呈现最小化的状态
tabFolder.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
//刷新布局。否则重新设置的布局不起作用
shell.layout(true);
}
public void restore(CTabFolderEvent event){
//设置选项卡的状态为最小化,选项卡的状态决定显示在右上角的窗口按钮
tabFolder.setMaximized(false);
tabFolder.setMaximized(false);
//改变选项卡的布局。呈现最小化的状态
tabFolder.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,false));
//刷新布局。否则重新设置的布局不起作用
shell.layout(true);
}
});
shell.setSize(300,400);
//shell.pack();
shell.open();
while(!shell.isDisposed()){
//当窗口没有被释放的时候
if(!display.readAndDispatch()){
display.sleep();
}
}
//释放图片资源
image.dispose();
display.dispose();
}
}