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: