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_ONLY
与 SWT.PUSH
具有相同的值,因此您有效地使用了明确禁止的 SWT.TOGGLE | SWT.PUSH
。该实施可能正在选择实施 SWT.PUSH
,这就是 setSelection
不起作用的原因。
从按钮停止事件的唯一方法是 setEnabled(false)
但这会使值变灰。
所以您可能想使用其他方式来显示这些设置。
我有一个 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_ONLY
与 SWT.PUSH
具有相同的值,因此您有效地使用了明确禁止的 SWT.TOGGLE | SWT.PUSH
。该实施可能正在选择实施 SWT.PUSH
,这就是 setSelection
不起作用的原因。
从按钮停止事件的唯一方法是 setEnabled(false)
但这会使值变灰。
所以您可能想使用其他方式来显示这些设置。