具有预定义样式的SWT控件

mar*_*osh 6 swt

我想在我的SWT项目控件(Button-s,Text-s等)中使用预定义的样式.我的第一个想法是扩展示例org.eclipse.swt.widgets.Text类,设置一些设置并使用新的类而不是原始类,但获得org.eclipse.swt.SWTException: Subclassing not allowed异常.怎么做对了?

Vla*_*mir 8

你必须覆盖checkSubclass方法什么都不做,否则它会抱怨不允许继承子类 - 因为通常你不应该真正覆盖标准组件.

@Override
protected void checkSubclass() {
    // Disable the check that prevents subclassing of SWT components
}
Run Code Online (Sandbox Code Playgroud)

您还应该考虑使用委托构建包含原始控件的自定义窗口小部件.例如,您可以使用自定义设置构建包含Text小部件的MyText.

值得记住的是,SWT提供了标准控件,这些控件在每个平台上本机查看.无论如何,仍然允许抛光标准组件,甚至是生产软件中必须的.