当SWT列表处于禁用状态时,是否可以看到垂直/水平滚动条?

时间:2014-03-17 09:16:54

标签: java swt

我在复合材料中有一个列表,并按以下方式定义:

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

当列表处于禁用状态(list.setEnabled(false);),并且列表中的值超过列表的高度时,是否有任何方法可以启用垂直滚动条?

2 个答案:

答案 0 :(得分:4)

滚动条由OS处理。因此,操作系统将决定何时显示/隐藏滚动条以及何时让用户使用它们。你不能影响那个。

有一个非常相似的问题here


,您可以将List包裹在ScrolledComposite中。这样,即使List被禁用,您仍然可以滚动:

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();
}

看起来像这样:

enter image description here

答案 1 :(得分:0)

<强>上下文

我上周已经解决了这个问题,我必须在禁用的表视图中启用滚动条,以防止用户检查项目复选框。

<强>解决方案

由于我们无法在禁用的表视图中启用垂直和水平滚动条,我只是阻止用户在不应该的时候检查复选框,并且当应该禁用该表时我也在灰色前景上创建项目。