Is it possible to get the vertical/horizontal scroll bar visible when the SWT List is in disabled state?

StackOverflow https://stackoverflow.com/questions/22450462

  •  15-06-2023
  •  | 
  •  

Question

I have a list in a composite and is defined in the following way :

List list = new List(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);

when the list is in disabled state (list.setEnabled(false);), and the values inside the list are more than the height of the list, is there any way to make the vertical scroll bar enabled?

Était-ce utile?

La solution

The scroll bars are handled by the OS. Consequently, the OS will decide when to show/hide the scroll bars and when to let the user use them. You can't influence that.

There is a very similar question here.


However, you can wrap your List in a ScrolledComposite. This way, you can still scroll even if the List is disabled:

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());

    final ScrolledComposite composite = new ScrolledComposite(shell, SWT.V_SCROLL);
    composite.setLayout(new FillLayout());

    List list = new List(composite, SWT.NONE);

    for (int i = 0; i < 20; i++)
    {
        list.add("Item: " + i);
    }

    composite.setContent(list);
    composite.setExpandHorizontal(true);
    composite.setExpandVertical(true);
    composite.setMinSize(list.computeSize(SWT.DEFAULT, SWT.DEFAULT));
    list.setEnabled(false);

    shell.pack();
    shell.setSize(100, 150);
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

Looks like this:

enter image description here

Autres conseils

Context

I had encountred this issue last week i had to enable scrollbars in a disabled table view to prevent users from checking items checkboxes.

Solution

Since we can't enable vertical and horizontal scrollbars in disabled table view, i just prevent user from checking the checkboxes when he is not supposed to, and i also make item on gray foreground when the table is supposed to be disabled.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top