我试图将图像与JApplet一起使用两天都没有成功。他们对Java做了什么?我哪里错了?

时间:2014-05-11 22:20:43

标签: java image japplet

编辑:对于那些仅仅通过标题来否定这个问题的白痴,如果问题突然出现,按钮显然意味着被按下,而根本没有任何努力。我已经研究了,我已经问了,我试过了。我要求的只是帮助。

几乎没有必要说我为尝试找到解决问题的方法付出了多少工作 - 我已经提出问题,谷歌搜索,阅读文件,你说出来,但都无济于事。

我想做的事情是我认为可以在几分钟内解决的问题:如何使用JApplet运行图像,并在paint(Graphics g)函数中使用这些图像。我从构建(也称为bin)文件夹运行JavaProject.html文件,它来自文件系统,而不是HTTP。我的代码中也没有包含“package”行。

回顾一下我的旅程,以下内容对我没有用处:

这是我的HTML文件:

<html>
<head>
    <title> My First Web Page </title>
</head>

<body>
    <applet code="JavaProject.class" width="500" height="600">
    </applet>
</body>
</html>

此方法为我提供“拒绝访问”“java.io.FilePermission”“Image.jpg”“read”错误。不用说,尝试在网站上处理图像也不起作用。这是一个比较令人沮丧的因为它适用于其他人,但不适合我。

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

public class JavaProject extends JApplet
{
    Image image;

    public void init()
    {
        image=getImage(getDocumentBase(),"/Space.gif");
    }

    public void paint(Graphics g)
    {
        super.paint(g);

        g.drawImage(image,20,20,this);
    }
}

所以那个人没有用。他们建议使用getResourceAsStream方法,所以我试过了。

Image image;
Exception lastException=null;

try    
{
      image=ImageIO.read(getClass().getResourceAsStream("/Space.gif"));
}

catch (IOException ex) 
{
      lastException=ex;
}

但是这个最终给了我 “非法论据异常”输入= null! 错误。

这是我的文件安排:http://oi61.tinypic.com/5ohydc.jpg

大多数其他方法并不真正起作用,或者只是太复杂而无法在此处写下来,但似乎没有一种方法可行。我问,那是我的最后手段,只是为了让这件事签名?我不知道如何去做,我认为我甚至不得不经历麻烦只是为了在我的JApplet上显示图像。

我真的失去了所有的信仰,如果要解决这个问题,毫无疑问需要极大的耐心,但我真的很感激任何帮助。我是Java的新手,所以我不能在技术上进行太多的讨论,但我很快就会从示例中获取。

2 个答案:

答案 0 :(得分:1)

您尝试的第一种方法有效。您需要做的唯一更改是在尝试使用的文件名之前删除斜杠(/)。这是你删除了一个字符的原始代码(工作正常):

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

public class JavaProject extends JApplet
{
    Image image;

    public void init()
    {
        image = getImage(getDocumentBase(),"Space.gif");
    }

    public void paint(Graphics g)
    {
        super.paint(g);

        g.drawImage(image,20,20,this);
    }
}

请注意,为了使其正常工作,您的'space.gif'图像必须位于项目的根目录中,以及引用它的Java文件,如下图所示:

enter image description here

查看图像在我的JavaProject.java文件所在的'default package'目录中的位置?使用上面的代码,确保您的图像在正确的位置,您的程序将成功运行。这是我的处于运行状态:

enter image description here

答案 1 :(得分:1)

第二次尝试失败的原因是它无法在您提供的路径中找到资源。这会导致getResourceAsStream返回null,然后会导致您看到的异常消息。


你说第一种情况下的错误信息是&#34; Access Denied&#34; &#34; java.io.FilePermission中&#34; &#34; image.jpg的&#34; &#34;阅读&#34; 或其他什么。但是根据代码,你并没有试图加载&#34; Image.jpg&#34;。这可能是你原来问题的根源。

相关问题是在getResourceAsStream版本中,您使用的是错误的绝对路径。您已使用路径"/Space.gif",但在您放置文件的位置,它应为"/javaproject/Space.gif"。或者,由于您在包含该文件的同一个(getResourceAsStream)包中的类上调用javaproject,因此您也可以使用相对路径;即"Space.gif"


  

我真的失去了所有的信仰,如果要解决这个问题,毫无疑问需要极大的耐心......

实际上,真正的解决方案是仔细阅读您正在使用的类/方法的文档,而不是回复您在互联网上找到的随机示例。