如何在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); } } 

 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

 /*   */ 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> 

您应该在小程序中看到您的图像,从左上角以100×100绘制。

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