package swt; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CBanner; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabFolder2Adapter; import org.eclipse.swt.custom.CTabFolderEvent; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.events.TypedEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Widget; import org.junit.Test; public class CompositeDemo_05 { @Test public void testCbanner(){ Display display= new Display(); //窗口 final Shell topShell= new Shell(display,SWT.SHELL_TRIM|SWT.BORDER); topShell.setText( "测试自testCbanner" ); topShell.setLayout( new FillLayout()); CBanner cBanner= new CBanner(topShell, SWT.NONE); cBanner.setLayout( new FillLayout()); //设置椭圆 cBanner.setSimple( false ); Composite child1= new Composite(cBanner, SWT.NONE); child1.setLayout( new FillLayout()); new Text(child1, SWT.SINGLE).setText( "窗口1" ); Composite child2= new Composite(cBanner, SWT.NONE); child2.setLayout( new FillLayout()); new Text(child2, SWT.SINGLE).setText( "窗口2" ); Composite child3= new Composite(cBanner, SWT.NONE); child3.setLayout( new FillLayout()); new Text(child3, SWT.SINGLE).setText( "窗口3" ); cBanner.setLeft(child1); cBanner.setRight(child2); cBanner.setBottom(child3); topShell.open(); while (!topShell.isDisposed()){ if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } @Test public void testSashForm(){ Display display= new Display(); //窗口 final Shell topShell= new Shell(display,SWT.SHELL_TRIM|SWT.BORDER); topShell.setText( "测试自sashform" ); topShell.setLayout( new FillLayout()); //SWT.HORIZONTAL决定了分割的方向,后边的数组决定了这个方向下的个数 SashForm sashForm= new SashForm(topShell, SWT.HORIZONTAL|SWT.SMOOTH); sashForm.setLayout( new FillLayout()); Composite child1= new Composite(sashForm, SWT.NONE); child1.setLayout( new FillLayout()); new Text(child1, SWT.SINGLE).setText( "窗口1" ); Composite child2= new Composite(sashForm, SWT.NONE); child2.setLayout( new FillLayout()); new Text(child2, SWT.SINGLE).setText( "窗口2" ); sashForm.setWeights( new int []{ 30 , 70 }); topShell.open(); while (!topShell.isDisposed()){ if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } @Test public void testCTabFolder(){ //负责和操作系统交互,如读取底层事件等 Display display= new Display(); //窗口 final Shell topShell= new Shell(display,SWT.SHELL_TRIM|SWT.BORDER); topShell.setText( "测试自定义选项卡控件" ); topShell.setSize( 800 , 500 ); //不设置布局不显示 topShell.setLayout( new GridLayout()); final CTabFolder tabFolder= new CTabFolder(topShell, SWT.TOP); //这里不是layout,grapExcess:fit=true抓住过剩 tabFolder.setLayoutData( new GridData(SWT.FILL,SWT.FILL, true , false )); tabFolder.setTabHeight( 20 ); //内容的padding tabFolder.marginHeight= 10 ; tabFolder.marginWidth= 10 ; //设置最大化最小化 tabFolder.setMaximizeVisible( true ); tabFolder.setMinimizeVisible( true ); //设置渐变色 Color colors[]= new Color[ 4 ]; colors[ 0 ]=display.getSystemColor(SWT.COLOR_DARK_BLUE); colors[ 1 ]=display.getSystemColor(SWT.COLOR_BLUE); colors[ 2 ]=display.getSystemColor(SWT.COLOR_WHITE); colors[ 3 ]=display.getSystemColor(SWT.COLOR_WHITE); int percents[]= new int []{ 25 , 50 , 100 }; tabFolder.setSelectionBackground(colors, percents); //椭圆 tabFolder.setSimple( false ); //增加最大化最小化监听 tabFolder.addCTabFolder2Listener( new CTabFolder2Adapter(){ @Override public void minimize(CTabFolderEvent event) { //所有事件的父类 TypedEvent parentEvent; //获得事件源:CTabFolder Widget widget = event.widget; System.out.println(widget.getClass().getSimpleName()); //事件发生的时间 System.out.println(event.time); //最小化了就只显示最大化按钮了 tabFolder.setMinimized( true ); //通过设置布局实现最大化最小化复原 tabFolder.setLayoutData( new GridData(SWT.FILL,SWT.FILL, true , false )); //使设置生效 topShell.layout( true ); } @Override public void maximize(CTabFolderEvent event) { tabFolder.setMaximized( true ); tabFolder.setLayoutData( new GridData(SWT.FILL,SWT.FILL, true , true )); //使设置生效 topShell.layout( true ); } @Override public void restore(CTabFolderEvent event) { tabFolder.setMinimized( false ); tabFolder.setMaximized( false ); tabFolder.setLayoutData( new GridData(SWT.FILL,SWT.FILL, true , false )); //使设置生效 topShell.layout( true ); } }); //设置最大文字数(?) tabFolder.setMinimumCharacters( 4 ); //设置右上角 // tabFolder.setTopRight(null); CTabItem tabItem= new CTabItem(tabFolder, SWT.NONE|SWT.CLOSE); tabItem.setText( "审核前审核前审核前审核前审核前审核前审核前" ); Label label1= new Label(tabFolder,SWT.LEFT); label1.setText( "审核前表格" ); tabItem.setControl(label1); CTabItem tabItem2= new CTabItem(tabFolder, SWT.NONE); tabItem2.setText( "审核后" ); Label label2= new Label(tabFolder,SWT.LEFT); label2.setText( "审核后表格" ); tabItem2.setControl(label2); CTabItem tabItem3= new CTabItem(tabFolder, SWT.NONE); tabItem3.setText( "选项卡3" ); Text text= new Text(tabFolder,SWT.MULTI|SWT.V_SCROLL|SWT.H_SCROLL|SWT.WRAP); text.setText( "审核后表格3" ); tabItem3.setControl(text); CTabItem tabItem4= new CTabItem(tabFolder, SWT.BORDER); tabItem4.setText( "选项卡4" ); Text text4= new Text(tabFolder,SWT.MULTI); text4.setText( "审核后表格4" ); tabItem4.setControl(text4); tabFolder.pack(); //topShell.pack(); topShell.open(); while (!topShell.isDisposed()){ if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } @Test public void testTabFolder(){ //负责和操作系统交互,如读取底层事件等 Display display= new Display(); //窗口 Shell topShell= new Shell(display,SWT.SHELL_TRIM|SWT.BORDER); topShell.setText( "测试选项卡控件" ); topShell.setSize( 800 , 500 ); //不设置布局不显示 topShell.setLayout( new GridLayout()); TabFolder tabFolder= new TabFolder(topShell, SWT.BOTTOM); TabItem tabItem= new TabItem(tabFolder, SWT.BORDER); tabItem.setText( "审核前" ); Label label1= new Label(tabFolder,SWT.LEFT); label1.setText( "审核前表格" ); tabItem.setControl(label1); TabItem tabItem2= new TabItem(tabFolder, SWT.BORDER); tabItem2.setText( "审核后" ); Label label2= new Label(tabFolder,SWT.LEFT); label2.setText( "审核前的表格" ); tabItem2.setControl(label2); //topShell.pack(); topShell.open(); while (!topShell.isDisposed()){ if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } } |