package cn.com.chengang.swt; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class ScrolledComposite1 { public static void main(String[] args) { final Display display = Display.getDefault(); final Shell shell = new Shell(); shell.setSize(327, 253); // ---------创建窗口中的其他界面组件------------- // 定义一个ScrolledComposite,式样为深陷型、带水平滚动条、带垂直滚动条 ScrolledComposite scrolledComposite = new ScrolledComposite(shell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); scrolledComposite.setBounds(12, 6, 256, 148); // 定义一个面板Composite,用此面板来容纳其他的组件 Composite composite = new Composite(scrolledComposite, SWT.NONE); // 这里没用setBounds是因为composite和scrolledComposite的左上角自动重合 composite.setSize(326, 237);// 设置composite面板的大小 scrolledComposite.setContent(composite);// 设置composite被scrolledComposite控制 // 建立八个文本框,以横二竖四排列。这里将Text的定义和Text的定位两个语句合写在了一起 new Text(composite, SWT.BORDER).setBounds(12, 13, 132, 40); new Text(composite, SWT.BORDER).setBounds(155, 13, 132, 40); new Text(composite, SWT.BORDER).setBounds(10, 70, 132, 40); new Text(composite, SWT.BORDER).setBounds(155, 70, 132, 40); new Text(composite, SWT.BORDER).setBounds(10, 120, 132, 40); new Text(composite, SWT.BORDER).setBounds(155, 120, 132, 40); new Text(composite, SWT.BORDER).setBounds(10, 170, 132, 40); new Text(composite, SWT.BORDER).setBounds(156, 171, 132, 40); // -----------------END------------------------ shell.layout(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } } <--------------------2--------------------> public static void main(String[] args) { Display display = new Display(); Color red = display.getSystemColor(SWT.COLOR_RED); Color blue = display.getSystemColor(SWT.COLOR_BLUE); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); // set the size of the scrolled content - method 1 final ScrolledComposite sc1 = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); final Composite c1 = new Composite(sc1, SWT.NONE); sc1.setContent(c1); c1.setBackground(red); GridLayout layout = new GridLayout(); layout.numColumns = 4; c1.setLayout(layout); Button b1 = new Button(c1, SWT.PUSH); b1.setText("first button"); c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT)); // set the minimum width and height of the scrolled content - method 2 final ScrolledComposite sc2 = new ScrolledComposite(shell, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); sc2.setExpandHorizontal(true); sc2.setExpandVertical(true); final Composite c2 = new Composite(sc2, SWT.NONE); sc2.setContent(c2); c2.setBackground(blue); layout = new GridLayout(); layout.numColumns = 4; c2.setLayout(layout); Button b2 = new Button(c2, SWT.PUSH); b2.setText("first button"); sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT)); Button add = new Button(shell, SWT.PUSH); add.setText("add children"); final int[] index = new int[] { 0 }; add.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { index[0]++; Button button = new Button(c1, SWT.PUSH); button.setText("button " + index[0]); // reset size of content so children can be seen - method 1 c1.setSize(c1.computeSize(SWT.DEFAULT, SWT.DEFAULT)); c1.layout(); button = new Button(c2, SWT.PUSH); button.setText("button " + index[0]); // reset the minimum width and height so children can be seen - method 2 sc2.setMinSize(c2.computeSize(SWT.DEFAULT, SWT.DEFAULT)); c2.layout(); } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } <----------------------3------------------------> 如果是 FormLayout composite1Layout = new FormLayout(); composite1.setLayout(composite1Layout); 如果设置了FormLayout ,那么上面的控件也需要设置为FormLayout。否则就将无法显示。 无法显示的情况 cTabItem2 = new CTabItem(cTabFolder1, SWT.NONE); cTabItem2.setText("Method Comment"); { composite6 = new Composite(cTabFolder1, SWT.NONE); FormLayout composite6Layout = new FormLayout(); composite6.setLayout(composite6Layout); cTabItem2.setControl(composite6); { scrolledComposite1 = new ScrolledComposite(composite6, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); FormData scrolledComposite1LData = new FormData(); // *关键在此 scrolledComposite1LData.width = 539; scrolledComposite1LData.height = 215; scrolledComposite1LData.left = new FormAttachment(0, 1000, 2); scrolledComposite1LData.top = new FormAttachment(0, 1000, 2); scrolledComposite1.setLayoutData(scrolledComposite1LData); { composite7 = new Composite(scrolledComposite1, SWT.NONE); scrolledComposite1.setContent(composite7); composite7.setBounds(0, 0, 560, 303); { label6 = new Label(composite7, SWT.NONE); label6.setText("Method Name:"); label6.setBounds(35, 30, 160, 20); label6.setFont(SWTResourceManager.getFont("宋体", 12, 0, false, false)); } { text6 = new Text(composite7, SWT.BORDER); text6.setText("text6"); text6.setBounds(200, 60, 220, 20); text6.setFont(SWTResourceManager.getFont("宋体", 12, 0, false, false)); } { button3 = new Button(composite7, SWT.PUSH | SWT.CENTER); button3.setText("Seek.."); button3.setBounds(439, 66, 53, 23); } } } }