JavaSWT如何判断一个widget是否可编辑

Java SWT how to determine a widget editable

我想知道如何检查小部件是按钮还是文本?我该怎么做?通过使用 widget.getClass().getName() 并比较等于 "org.eclipse.swt.widgets.Combo" 的字符串?是否有任何示例或示例代码可以证明这一点?我想检查一个小部件是否是一个可编辑的小部件(文本、微调器、组合)。

不幸的是,在 SWT 可编辑小部件中 类 没有实现任何通用接口。如果此功能对您很重要,请实现您自己的界面:

public interface Editable{
    public void comommonEditableMethod(Param param); 
}

然后您自己的 SWT 小部件,您想要在 "editable" 组中:

public class MyText extends Text implements Editable {...
public class MyCombo extends Combo implements Editable {...

等... 然后在代码中你可以检查:

if(myControl instanceof Editable) {
    // do something
}

请记住在您子类化的每个 SWT 控件中重写 Widget 的方法,否则您将得到讨厌的异常:

@Override
protected void checkSubclass () {
    //DISABLE SUBCLASS CHECK
}

Button 不可滚动,TextSpinnerCombo 都是 scrollable.But 所有这些都是 class 的子 [=] 14=]。 请参考下面的屏幕截图并根据您的需要修改文本代码(Main class)。重要的是要了解 Widget class 类型层次结构。