我想在我的SWT项目控件(Button-s,Text-s等)中使用预定义的样式。我的第一个想法是扩展示例org.eclipse.swt.widgets.Text
类,设置一些设置并使用新的类而不是原始类,但得到org.eclipse.swt.SWTException: Subclassing not allowed
异常。怎么做对了?
答案 0 :(得分:8)
你必须覆盖checkSubclass方法什么都不做,否则会抱怨不允许继承子类 - 因为通常你不应该真正覆盖标准组件。
@Override
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
您还应该考虑使用委托来构建包含原始控件的自定义窗口小部件。例如,您可以使用自定义设置构建包含Text小部件的MyText。
要记住的是,SWT提供了标准控件,这些控件在平台上的每个平台上都是原生的。无论如何,仍然允许抛光标准组件,甚至是生产软件中必须的。
答案 1 :(得分:4)
有关此问题,请参阅SWT Faq。在那里你还会找到一个如何编写自定义小部件的链接