2

画像があり、アプレットに表示したいのですが、問題は画像が表示されないことです。私のコードに何か問題がありますか?

ありがとう...

これが私のコードです:

import java.applet.Applet;
import java.awt.*;


 public class LastAirBender extends Applet
 {

 Image aang;

 public void init()
 {

  aang = getImage(getDocumentBase(), getParameter("images.jpg"));
 }

 public void paint(Graphics g) 
 {

    g.drawImage(aang, 100, 100, this);
 }

}
4

3 に答える 3

3
aang = getImage(getDocumentBase(), getParameter("images.jpg"));

私はあなたが何か間違ったことをしているのではないかと疑っています。

aang = getImage(getDocumentBase(), "images.jpg");

HTML/applet 要素の内容は? 画像の名前は何ですか? 画像は HTML と同じディレクトリにありますか?

更新 1

コードの 2 行目 (変更された) はimages.jpg、HTML と同じディレクトリにファイルをロードしようとします。

もちろん、メソッドはすぐに (今は) 戻りますが、非同期で (後で) ロードするMediaTrackerため、イメージのロードを追跡するために を追加する必要があるかもしれません。Applet.getImage()

更新 2

この正確な実験を試してください:

このソースを として保存します${path.to.current.code.and.image}/FirstAirBender.java

/*
<applet class='FirstAirBender' width=400 height=400>
</applet>
*/
import javax.swing.*;
import java.awt.*;
import java.net.URL;
import javax.imageio.ImageIO;

public class FirstAirBender extends JApplet {

    Image aang;

    public void init() {
        try {
            URL pic = new URL(getDocumentBase(), "images.jpg");
            aang = ImageIO.read(pic);
        } catch(Exception e) {
            // tell us if anything goes wrong!
            e.printStackTrace();
        }
    }

    public void paint(Graphics g) {
        super.paint(g);
        if (aang!=null) {
            g.drawImage(aang, 100, 100, this);
        }
    }
}

次に、プロンプトに移動してコードをコンパイルし、ソース名を引数として使用してアプレット ビューアーを呼び出します。

C:\Path>javac FirstAirBender.java
C:\Path>appletviewer FirstAirBender.java
C:\Path>

左上から 100x100 で描かれたアプレットの画像が表示されるはずです。

于 2011-09-16T05:49:14.073 に答える
2

1) 私たちは 21 世紀に生きているので、Applet の代わりに JApplet をお願いします

import java.awt.*;
import javax.swing.JApplet;

public class LastAirBender extends JApplet {

    private static final long serialVersionUID = 1L;
    private Image aang;

    @Override
    public void init() {
        aang = getImage(getDocumentBase(), getParameter("images.jpg"));
    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(aang, 100, 100, this);
    }
}

2) Icon/ImageIconの場合は、 JLabelを探す方がよいでしょう。

3) お願いしますgetImage(getDocumentBase(), getParameter("images.jpg"));

そこで私は次のようなものを待っています

URL imageURL = this.getClass().getResource("images.jpg");
Image image = Toolkit.getDefaultToolkit().createImage(imageURL);
Image scaled = image.getScaledInstance(100, 150, Image.SCALE_SMOOTH);
JLabel label = new JLabel(new ImageIcon(scaled));
于 2011-09-16T05:21:16.867 に答える