如何在禁用 ScrolledComposite 中的 CheckboxTableViewer 时启用滚动?

How to enable scroll when CheckboxTableViewer inside a ScrolledComposite is disabled?

我在 ScrolledComposite 中有一个 CheckboxTableViewer。我必须根据另一个复选框按钮启用或禁用所有 table 项。为此,我使用

CheckboxTableViewer.getTable().setEnabled(false). 

在上述情况下,ScrolledComposite 也与 table 一起禁用。但我希望滚动行为像往常一样工作,即使 CheckboxTableViewer 被禁用(所有项目都被禁用)。

table 控件在禁用时无法显示滚动条。这只是本机控件的工作方式,即 OS 呈现控件的方式。

但是,您可以将 Table 控件包装在 ScrolledComposite 中。这样,ScrolledComposite 将滚动而不是 Table。

这是我所做的代码:

table.setEnabled(false); 
Composite composite = table.getParent(); 
if ((null != composite) && (composite instanceof ScrolledComposite)) {
      ScrolledComposite scrolledComposite = (ScrolledComposite)composite;
      scrolledComposite.setMinSize(table.computeSize(SWT.DEFAULT, SWT.DEFAULT));  
}