SWT 按钮:如果 SWT.READ_ONLY,setSelection(true) 不工作

SWT Button: setSelection(true) not working if SWT.READ_ONLY

我有一个 SWT.TOGGLE 按钮矩阵,它们代表我的应用程序中的一些切换激活器。

如果它们被存储为激活状态,想法是将它们显示为切换(按下),但要 SWT.READ_ONLY 因为此屏幕仅用于显示目的并且必须是非交互式的。

问题是,如果我将 SWT.READ_ONLY 添加到按钮,则 setSelection(true) 将不起作用,并且我调用 setSelection(true) 的所有按钮都显示为未切换。

我们该如何处理?

Button button = new Button(column, SWT.TOGGLE | SWT.READ_ONLY);
button.setSelection(true);

SWT.READ_ONLY 不是 Button 的有效样式,您将通过指定它获得未定义的行为。您只能将 Javdoc 中列出的样式用于单个控件。

在当前的 SWT 实现中,SWT.READ_ONLYSWT.PUSH 具有相同的值,因此您有效地使用了明确禁止的 SWT.TOGGLE | SWT.PUSH。该实施可能正在选择实施 SWT.PUSH,这就是 setSelection 不起作用的原因。

从按钮停止事件的唯一方法是 setEnabled(false) 但这会使值变灰。

所以您可能想使用其他方式来显示这些设置。