Applet在浏览器中显示为空

时间:2013-06-02 20:52:36

标签: java image swing graphics applet

这个applet假设显示两张图片在彼此的顶部。当我在浏览器中运行此applet时,它不会显示图片。图片名称正确,它们与applet位于同一文件夹中。

import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JApplet;


public class question3b extends JApplet{


    public void init() {
        repaint();
        }

     public void paint(Graphics g)
    {
        super.paint(g);
        ImageIcon image1 = new ImageIcon("1.JPG");
        ImageIcon image2 = new ImageIcon("2.JPG");
        g.drawImage(image1.getImage(), 100, 20 , 100, 100, this);
        g.drawImage(image2.getImage(), 100, 150 , 100, 100, this);

  }
}

这是HTML页面。

<html>
<head>
<title>Welcome Java Applet</title>
</head>
<body>
<applet
  code = "question3b.class"
  width = 1000
  height = 500>
</applet>
</body>
</html>

2 个答案:

答案 0 :(得分:4)

建议:

  • 不要覆盖JApplet的绘制方法。
  • 而是覆盖JPanel的paintComponent方法并在小程序中显示该面板。
  • 不要在paintComponent方法中调用repaint()。请。
  • 不要在paint或paintComponent方法中读取图像。仅在中读取图像
  • 不要将图像作为文件读取,而是作为资源读取。
  • 测试以确保您正在寻找图像的正确位置。
  • 你可以通过阅读有关Swing图形的一些教程来获益,因为你正在做的事情看起来像是在做一些猜测。教程将向您展示正确的做事方式。你不会后悔读它们。
  • 甚至比在JPanel中绘制图像更好的是将它们放入ImageIcons并在JLabel中显示它们。

答案 1 :(得分:3)

您遇到的问题是如何加载图片

ImageIcon image2 = new ImageIcon("2.JPG");

假设图像源是客户端硬盘上的本地文件,其中可能是非法操作。

答案取决于文件的存储位置。如果图像是应用程序jar中的嵌入式资源,那么您应该使用

ImageIcon image2 = new ImageIcon(getClass().getResource("/2.JPG"));

如果图像存储在Web服务器中,那么您应该使用

try {
    URL url = new URL(getCodeBase(), "2.jpg");
    img = ImageIO.read(url);
} catch (IOException e) { 
    e.printStackTrace();
}

并插入气垫船刚刚说过的所有内容(+1)