【发布时间】:2012-07-23 03:08:09
【问题描述】:
我有两种类型的编辑器。一个是JTextArea 的子类,一个是JTable 的子类(JTextArea 和JTable 都是JComponent 的子类)。我希望我的两个类TextAreaEditor 和TableEditor 实现接口Editor,它只有方法public String getText()。
我希望客户端代码简单地使用Editor 接口。问题是,我所有的Editors 都使用JComponent 的方法,比如setEnabled(bool)。由于我的编辑器是一个接口,我不能让它扩展 JComponent,所以在调用这些方法时我必须使用实现而不是接口。所以我认为我可以简单地将Editor 设为JComponent 的子类,并让我的类扩展它,而不是使用接口。问题是像TextAreaEditor 这样的类已经扩展了像JTextArea 这样的类,所以我不能让它们扩展另一个类。
有什么方法可以确保我的 Editor 类是 JComponent,并且我的具体编辑器类是 Editors 和 JComponent 的子类?
【问题讨论】:
-
这有点不清楚。你能发布一些示例类/实现吗?特别是,不清楚为什么 Editor 必须是一个类?
-
对我来说听起来你可以使用抽象类。制作扩展JComponent的Editor抽象类,然后使TextAreaEditor和TableEditor扩展JComponent并实现setEnabled(bool)。
-
我尝试在一个新标题中记录我对您问题的解释。这真的是你要问的吗?
-
@Arkadiy 最初它是一个界面。当我需要调用
editor.setEnabled(true)时遇到问题,因为setEnabled()是JComponent 类的一个方法。 @Asterisk问题在于TextAreaEditor需要扩展JTextArea,因此它也不能扩展抽象类。 @erickson 是的,这对我来说似乎是一个更好的标题。很难说。 -
可以在编辑器界面添加 setEnabled 吗?
标签: java swing interface awt multiple-inheritance