import org.eclipse.swt.SWT; import org.eclipse.swt.custom.TreeEditor; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.swt.widgets.TreeItem; public class TestTreeScrollbars { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display, SWT.SHELL_TRIM); shell.setLayout(new FillLayout()); Tree tree = new Tree(shell, SWT.NONE); tree.setHeaderVisible(true); tree.setLinesVisible(true); for (int i = 0; i < 3; ++i) { TreeColumn col = new TreeColumn(tree, SWT.NONE); col.setText("Column " + i); } shell.pack(); shell.setSize(200, 200); shell.open(); // Create tree items with tree editors for the second column for (int i = 0; i < 10; ++i) { TreeItem item = new TreeItem(tree, SWT.NONE); item.setText(0, "Some test text"); Combo control = new Combo(tree, SWT.READ_ONLY); control.setItems("test1", "test2"); TreeEditor treeEditor = new TreeEditor(tree); treeEditor.grabHorizontal = treeEditor.grabVertical = true; treeEditor.setEditor(control, item, 1); item.setText(2, "End text"); } // Pack all columns for (TreeColumn column : tree.getColumns()) { /* * Double packing just because the middle TreeEditor column displays * really small for me otherwise */ column.pack(); column.pack(); } while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } }