dポイントプレゼントキャンペーン実施中!

現在、「やさしいJava」(SOFTBANK Publishing)という解説書のプログラムをNetBeans6.5.1で実行しながら勉強しています。

package sa16_03;

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;

public class Applet16_03 extends Applet {

Image imgDuke;

@Override public void init() {
imgDuke = getImage(getDocumentBase(), "DukeWithHelmet.bmp");
}

@Override public void paint(Graphics g) {
g.drawImage(imgDuke, 30, 40, this);
}
}

上記のソースはDukeWithHelmet.bmpという画像ファイルを表示させる為のプログラムなのですが、アプレットビューア及びHTMLには何も表示されませんでした。

http://okwave.jp/qa4366603.htmlの回答例に従って、paintメソッド内に
g.drawString( getDocumentBase().toString(), 10, 50 );
を付与して再度アプレットビューアを起動したら、
file:/C:/NetBeansProjects/SOFTBANK/Easy/Lesson16/Sample16/build/Applet16_03.html
と表示されました。

getDocumentBase()メソッドはアプレットを起動するHTMLファイルの場所をURLで返すので、DukeWithHelmet.bmpもApplet16_03.htmlと同じ場所に置いています。

尚、関係がありそうなファイル構造は以下のようになります。
C:\NetBeansProjects\SOFTBANK\Easy\Lesson16\Sample16
までは一本道で、Sample16以下は
┳build┳classes━sa16_03━Applet16_03.class
┃    ┣DukeWithHelmet.bmp
┃    ┗Applet16_03.html
┗src ━sa16_03━Applet16_03.java
というファイル構造になっています。

画像が表示されない原因の回答を是非お教え願います。

A 回答 (1件)

bmpではなく jpgかpng形式で画像を用意してみてはいかがでしょう


256色に減色してもいいのであればGIFという手もあります

@Override public void paint(Graphics g) {
int w = imgDuke.getWidth();
int h = imgDuke.getHeight();
g.drawString( w + " " + h, 30, 20 );
g.drawImage(imgDuke, 30, 40, this);
}

としてみましょう たぶん 『-1 -1』といった具合に表示されると思います
    • good
    • 0
この回答へのお礼

回答有難う御座います。

まず、bmpではなくてpng形式の画像を使用し、paintメソッド内のコードを
int w = imgDuke.getWidth(this);
int h = imgDuke.getHeight(this);
g.drawString( w + " " + h, 30, 20 );
g.drawImage(imgDuke, 30, 40, this);
としたら、画像が読み込めた上、(30, 20)の位置に『512 512』(画像ファイルの大きさ)が表示されました。因みにbmp形式だと読み込めず、『-1 -1』になる事も確認しました。
getWidth及びgetHeightの実引数をthis(画像ファイル自身の幅と高さ)にする必要がありましたが、無事に解決しました。
本当に有難う御座いました。

お礼日時:2009/06/23 11:39

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