0

japplet 上不显示图像。

  public void setCharacter(String type)
 {
  try
  {
   character = ImageIO.read(new File(type));
  }
  catch (Exception e)
  {
   e.printStackTrace();
  }
 }

这就是我检索文件的方式。

public void paint(Graphics g) {
  Graphics2D g2 = (Graphics2D) g;

  g2.setBackground(Color.BLACK);

  switch (manipulateCase)
  {
   case 0:
    g2.setColor(Color.BLACK);
    g2.fill(new Rectangle(0, 0, xBound, yBound)); // painting the background.
    break;

   case 1:
    normandy.delete(g2); // delete previous position
    ImageIcon stuff = new ImageIcon("spaceship.jpg");
    stuff.paintIcon(this, g2, 0, 0);
    //g2.drawImage(normandy.getImage(), normandy.getBounds().x, normandy.getBounds().y, null); // draw new position
    break;

   /*case 2:
    for (int i = 0; i < aLevel.getInvaders().length; i++) {
     g2.fill(aLevel.getInvaders()[i].getCharacter());
    }
    break;

   case 3:
    g2.setColor(Color.WHITE);

    if (bullets.getBullets().size() > 0)
     for (int i = 0; i < bullets.getBullets().size(); i++) {
      g2.fill(bullets.getBullets().get(i).getBullet());
      System.out.println("BULLETS: "
        + bullets.getBullets().size());
     }
    break;

   case 4:
    break; */
  }

 }

上面的代码在小程序中。

我究竟做错了什么?为什么我会收到错误消息。“无法读取输入文件!”

任何帮助,将不胜感激。

谢谢你,布拉格曼

4

2 回答 2

1

文件位于何处?在浏览器中运行的小程序无法读取您计算机上的文件,它只能通过 URL 访问它。它可以访问远程计算机上的文件,但通常(出于充分的理由)不允许这样做。所以替换new ImageIcon(String filename)new ImageIcon(URL location).

于 2011-01-24T03:39:27.807 回答
-1

不应通过覆盖 paint() 方法来完成自定义绘画。

首先阅读 Swing 教程中关于如何制作小程序的部分,以了解有关编写小程序的更多详细信息。还有一个关于“将图像加载到小程序中”的部分。

我也同意通过使用 JFrame 的简单应用程序来学习如何进行绘画更容易练习。您可以阅读 Swing 教程中有关“自定义绘画”的部分以获取更多示例。本教程包含大量信息和示例。

于 2011-01-24T04:50:27.520 回答