SWT中的ExpandBar可以实现下拉效果,代码如下:
import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.ExpandBar; import org.eclipse.swt.widgets.ExpandItem; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Shell; public class TestExpandBar { public TestExpandBar() { final Display display = Display.getDefault(); final Shell shell = new Shell(SWT.MIN); shell.setText("ExpandBar练习"); shell.setSize(200, 518); shell.setLayout(new FillLayout()); ExpandBar expandBar = new ExpandBar(shell, SWT.V_SCROLL); { Composite comp1 = new Composite(expandBar, SWT.NONE); comp1.setLayout(new GridLayout(2, false)); new Link(comp1, SWT.NONE).setText("<a>查看系统信息</a>"); new Link(comp1, SWT.NONE).setText("<a>添加/删除程序</a>"); new Link(comp1, SWT.NONE).setText("<a>更改一个设置</a>"); ExpandItem item1 = new ExpandItem(expandBar, SWT.NONE); item1.setText("系统任务"); item1.setHeight(75);// 设置Item的高度 item1.setControl(comp1);// setControl方法控制comp1的显现 } { Composite comp2 = new Composite(expandBar, SWT.NONE); comp2.setLayout(new GridLayout(2, false)); new Link(comp2, SWT.NONE).setText("<a>网上邻居</a>"); new Link(comp2, SWT.NONE).setText("<a>我的文档</a>"); new Link(comp2, SWT.NONE).setText("<a>共享文档</a>"); new Link(comp2, SWT.NONE).setText("<a>控制面板</a>"); ExpandItem item1 = new ExpandItem(expandBar, SWT.NONE); item1.setText("其他位置"); item1.setHeight(95);// 设置Item的高度 item1.setControl(comp2);// setControl方法控制comp1的显现 } { Composite comp3 = new Composite(expandBar, SWT.NONE); comp3.setLayout(new GridLayout()); // setup bold font Font boldFont = JFaceResources.getFontRegistry().getBold( JFaceResources.DEFAULT_FONT); Label l = new Label(comp3, SWT.NONE); l.setText("我的电脑"); l.setFont(boldFont); new Label(comp3, SWT.NONE).setText("系统文件夹"); ExpandItem item1 = new ExpandItem(expandBar, SWT.NONE); item1.setText("详细信息"); item1.setHeight(50);// 设置Item的高度 item1.setControl(comp3);// setControl方法控制comp1的显现 } // shell.layout(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } public static void main(String[] args) { new TestExpandBar(); } }