SWT按钮:如果SWT.READ_ONLY

时间:2018-11-10 08:31:36

标签: java eclipse button widget swt

我有一个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);

谢谢

1 个答案:

答案 0 :(得分:1)

class test extends Promise { constructor(fn) { super(fn) return this } wait(seconds) { return this.then(() => new test(resolve => { setTimeout(function() { resolve(seconds) }, seconds * 1000); })) } done(fn) { return super.then(fn) } } console.log('start'); p = new test(r => r()) p.wait(3) //(2) must be before (1) .done(x => console.log(x)) .wait(1) .done(x => console.log(x))不是Button的有效样式,通过指定它会得到未定义的行为。您只能将Javdoc中列出的样式用于单个控件。

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

停止按钮事件的唯一方法是setSelection,但这将使该值变灰。

因此,您可能希望使用其他方式来显示这些设置。