我有一个 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)
但这会使该值变灰。
所以您可能想使用其他方式来显示这些设置。
关于java - SWT按钮: setSelection(true) not working if SWT. READ_ONLY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53237297/