JAVAアプレットでフレームを作成しました。
そこにJPEGの画像を表示させようと思い、下記のようにしました。

class TestFrame extends Frame
{
Image image;

TestFrame(String title)
{
super(title);
setLayout(null);
image = getImage(getDocumentBase(), "A1.jpg");
}

public void paint(Graphics g){
g.drawImage(image,300,300,this);
}
}
しかし、上記をコンパイルすると
「image = getImage(getDocumentBase(), "A1.jpg");」の所でコンパ
イルエラーが発生しました。
色々調べた所「public URL getDocumentBase()ドキュメントの URL
を返します。戻り値:アプレットを含んでいるドキュメントの URL」
と言うことでした。
つまりgetDocumentBaseが使えないみたいです。
ではどうやってフレームにJPEGの画像を表示させればいいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

まずはコンパイルエラーの原因から:


TestFrameクラスはFrameクラスのサブクラスとして定義されてますね。getDocumentBaseはAppletクラスのメソッドですから、コンパイラは「TestFrameクラスにも、その基本クラスにもgetDocumentBaseなどというメソッドは定義されてないぞ!」とエラーにしているのでしょう。

解決策は:
フレームにイメージを表示させるには、アプレットで getImage(getDocumentBase(),"A1.jpg") とやった結果(Imageクラスへの参照)を何らかの方法でフレームに渡してあげる必要があります。TestFrameクラスの定義をアプレットの中に入れてしまう(Innerクラスにする)のも解決策のひとつになるでしょう。

おまけ:
nobi2000さんの回答ですけど、Imageはabstractクラスですから new Image(...) はできませんが、アプレットの getImage は実際にはImageクラスの派生クラスを返します。それをImageクラスの参照に代入することは何ら問題ありません。
    • good
    • 0
この回答へのお礼

>getImage(getDocumentBase(),"A1.jpg") とやった結果(Imageクラスへの参
>照)を何らかの方法でフレームに渡してあげる必要があります。
私も自分の知っている限りの方法を使い、アプレットで取得した結果をフレームに
渡そうとしましたが、出来ませんでした。
内部クラスにすることによって、それが可能とは知らなかったので、フレームを
内部クラスにして、何とかフレームに画像を表示することを可能としました。

フレームを内部クラスにはしたくなかったのですが、この際やむを得ないですね。

色々ありがとうございました。

お礼日時:2001/03/14 10:25

絵を張ったことはないのですが…。



Imageってabstractクラスじゃないのかな…。
abstractクラスって、
継承してabstractメソッドをオーバーライドさせて使うものじゃなかったかとおもうのだけども…。

とりあえず、
ImageじゃなくてImageIcon使って
ImageIcon image = new ImageIcon("A1.jpg");
みたいに書き換えたらよいのではないでしょおか。
    • good
    • 0
この回答へのお礼

フレームを内部クラスにすることによって、画像をフレームに表示することが
可能となりました。

色々ご親切にありがとうございました。

お礼日時:2001/03/14 10:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング