我在复合材料中有一个列表,并按以下方式定义:
List list = new List(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
当列表处于禁用状态(list.setEnabled(false);),并且列表中的值超过列表的高度时,是否有任何方法可以启用垂直滚动条?
答案 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();
}
看起来像这样:
答案 1 :(得分:0)
<强>上下文强>
我上周已经解决了这个问题,我必须在禁用的表视图中启用滚动条,以防止用户检查项目复选框。
<强>解决方案强>
由于我们无法在禁用的表视图中启用垂直和水平滚动条,我只是阻止用户在不应该的时候检查复选框,并且当应该禁用该表时我也在灰色前景上创建项目。