Enabling scroll bars in a Java SWT window

java, swt

Solution

You don't need the `ScrolledComposite`, use `SWT.V_SCROLL` style on the `StyledText`. Here is an example, with layouts instead of the `setBounds` :

/**
 * Create contents of the window.
 */
protected void createContents() {
    shlWhois = new Shell();
    shlWhois.setSize(450, 300);
    shlWhois.setText("Whois");
    shlWhois.setLayout(new GridLayout(2, false));

    Label lblDomain = new Label(shlWhois, SWT.NONE);
    lblDomain.setLayoutData(GridDataFactory.fillDefaults().create());
    lblDomain.setText("Domain");

    text = new Text(shlWhois, SWT.BORDER);
    text.setLayoutData(GridDataFactory.fillDefaults().grab(true, false).create());

    final StyledText styledText = new StyledText(shlWhois, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI | SWT.WRAP);
    styledText.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).span(2, 1).create());

    Button btnWhois = new Button(shlWhois, SWT.NONE);
    btnWhois.setText("Search");
}

You can use the styles `SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI` if you also want an horizontal scrollbar.

Problem

How will I enable scroll bars to display on the custom.StyledText? It displays the scroll bars but does not allow the custom.StyledText to scroll? ``` package app; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.custom.ScrolledComposite; public class myapp { protected Shell shlWhois; private Text text; /** * Launch the application. * @param args */ public static void main(String[] args) { try { myapp window = new myapp(); window.open(); } catch (Exception e) { e.printStackTrace(); } } /** * Open the window. */ public void open() { Display display = Display.getDefault(); createContents(); shlWhois.open(); shlWhois.layout(); while (!shlWhois.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } /** * Create contents of the window. */ protected void createContents() { shlWhois = new Shell(); shlWhois.setSize(450, 300); shlWhois.setText("Whois"); Label lblDomain = new Label(shlWhois, SWT.NONE); lblDomain.setBounds(10, 10, 55, 15); lblDomain.setText("Domain"); text = new Text(shlWhois, SWT.BORDER); text.setBounds(72, 4, 260, 21); final ScrolledComposite scrolledComposite_1 = new ScrolledComposite(shlWhois, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); scrolledComposite_1.setAlwaysShowScrollBars(true); final Composite c = new Composite(scrolledComposite_1, SWT.NONE); scrolledComposite_1.setMinHeight(1000); scrolledComposite_1.setExpandVertical(true); scrolledComposite_1.setExpandHorizontal(true); scrolledComposite_1.setBounds(10, 31, 403, 221); final StyledText styledText = new StyledText(scrolledComposite_1, SWT.BORDER | SWT.WRAP); scrolledComposite_1.setContent(styledText); scrolledComposite_1.setMinSize(styledText.computeSize(SWT.DEFAULT, SWT.DEFAULT)); Button btnWhois = new Button(shlWhois, SWT.NONE); btnWhois.addMouseListener(new MouseAdapter() { @Override public void mouseDown(MouseEvent arg0) { } }); btnWhois.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent arg0) { } }); btnWhois.setBounds(338, 2, 75, 25); btnWhois.setText("Search"); } } ```

Original source