如何在Applet中显示图像?

时间:2011-09-16 05:01:32

标签: java image intellij-idea japplet

我有一个图像,我想在applet中显示它,问题是图像不会显示。我的代码有问题吗?

...谢谢

这是我的代码:

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);
 }

}

3 个答案:

答案 0 :(得分:3)

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

我怀疑你做错了什么,这应该很简单:

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

HTML / applet元素的内容是什么?图像的名称是什么?该图像与HTML在同一目录中吗?

更新1

第二行(已更改)代码将尝试将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);
        }
    }
}

然后转到提示并编译代码,然后使用源名称作为参数调用applet viewer。

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

你应该在applet中看到你的图像,从左上角以100x100绘制。

答案 1 :(得分:2)

1)我们生活在21世纪,然后请JApplet而不是Applet

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));

答案 2 :(得分:0)

好,以上答案是正确的。这是我用来显示图像的代码。希望对您有所帮助:

/*
    <applet code = "DisplayImage.class" width = 500 height = 300>
    </applet>
*/

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

public class DisplayImage extends Applet
{
    Image img1;

    public void init(){
        img1 = getImage(getCodeBase(),"Nature.jpg" );
    }

    public void paint(Graphics g){
        g.drawImage(img1, 0,0,500,300,this);
    }

}

在上面的代码中,我们创建一个图像类对象,并从代码库指定的位置获取图像。然后使用drawImage方法绘制图像。那些对了解getCodeBase()和getDocumentBase()方法的值感兴趣的人可以在paint方法中添加以下代码。它们实际上是项目文件夹中src文件夹的位置:-

    String msg;
    URL url=getDocumentBase();
    msg="Document Base "+url.toString();
    g.drawString(msg,10,20);

    url=getCodeBase();
    msg="Code Base "+url.toString();
    g.drawString(msg,10,40);

还要注意一点:-确保图像和类在src文件夹中没有相同的名称。这阻止了我的图像显示。