编辑:对于那些仅仅通过标题来否定这个问题的白痴,如果问题突然出现,按钮显然意味着被按下,而根本没有任何努力。我已经研究了,我已经问了,我试过了。我要求的只是帮助。
几乎没有必要说我为尝试找到解决问题的方法付出了多少工作 - 我已经提出问题,谷歌搜索,阅读文件,你说出来,但都无济于事。
我想做的事情是我认为可以在几分钟内解决的问题:如何使用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的新手,所以我不能在技术上进行太多的讨论,但我很快就会从示例中获取。
答案 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文件,如下图所示:
查看图像在我的JavaProject.java文件所在的'default package'目录中的位置?使用上面的代码,确保您的图像在正确的位置,您的程序将成功运行。这是我的处于运行状态:
答案 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"
。
我真的失去了所有的信仰,如果要解决这个问题,毫无疑问需要极大的耐心......
实际上,真正的解决方案是仔细阅读您正在使用的类/方法的文档,而不是回复您在互联网上找到的随机示例。