4

我有一个名为 MyClass 的类,我希望这个类扩展 Graphics2D(在 java.awt 中)。但是,当我键入时, public class MyClass extends Graphics2D { .... }我必须添加未实现的方法 draw、drawImage、addRenderingHints 等,因为 Eclipse 显示此错误并且它不会编译。

这就是我想到的问题:我只想使用Graphics2D 的drawsetBackground和其他几种方法,我不希望其余代码与其他未实现的方法一起出现,这些方法是强制性的。

有没有办法避免这种情况?因为在代码方面我非常干净和简单,而且我不想要其他 100 行我什至不使用的代码。

你有什么建议?

4

2 回答 2

2

请参阅http://download.oracle.com/javase/6/docs/api/java/awt/Graphics2D.html

Graphics2D 是一个抽象类,很多方法不是抽象的,必须定义所有方法才能获得可以实例化的子类。

如果你想尝试,你可以尝试扩展一些实现 Graphics2D 的类。但是,如果您不小心,您将面临您想要的方法的实现可能与您未覆盖的方法不一致的风险......

于 2011-07-14T20:30:56.417 回答
2

您可以让它扩展 Graphics,并且每当您需要 Graphics2D 时,只需转换即可。

Graphics g = this.create(); Graphics2D g2d = (Graphics2D) g;

但是,您需要在其中创建一个 Graphics 变量,因为您不能强制转换this.

所以对于“setBackground”:

public void setBackground(Image img) {
    g2d.setBackground(img);
}

但实际上,无论你做什么,它都会变得一团糟。我什至不确定您是否可以在不发生坏事的情况下执行 this.create() 操作,因此请记住这一点。

于 2011-07-14T20:39:25.557 回答