4

MyClass という名前のクラスがあり、このクラスで Graphics2D (java.awt) を拡張する必要があります。ただし、 public class MyClass extends Graphics2D { .... }入力すると、実装されていないメソッド draw、drawImage、addRenderingHints などを追加する必要があります。これは、Eclipse がこのエラーを表示し、コンパイルできないためです。

これが私の頭に浮かんだ質問です。私はdrawsetBackground、および Graphics2D の他のいくつかのメソッドを使用したいだけです。コードの残りの部分に、必須である他の実装されていないメソッドを含めたくありません。

これを回避する方法はありますか?私はコードに関しては非常にクリーンでシンプルなので、使用していない他の 100 行のコードは必要ありません。

あなたの提案は何ですか?

4

2 に答える 2

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 に答える
2

http://download.oracle.com/javase/6/docs/api/java/awt/Graphics2D.htmlを参照してください。

Graphics2D は抽象クラスです。多くのメソッドは抽象ではありません。インスタンス化できるサブクラスを取得するには、すべてのメソッドを定義する必要があります。

試してみたい場合は、Graphics2D を実装するクラスを拡張してみてください。ただし、注意しないと、必要なメソッドの実装が、オーバーライドしないメソッドと一貫性がない可能性があるというリスクがあります...

于 2011-07-14T20:30:56.417 に答える