我不确定如何充分表达这一点,但是,我可能已经浏览了10个关于此主题的Google链接,但其中没有一个帮助我解决了我的问题。
我认为这很简单,我只想尝试将图像添加到我的java applet的paint
函数中,就像任何其他形状一样,但这对我来说已经成了一场噩梦。
问题在于,每当我尝试运行drawImage
函数时,它都会一直说拒绝访问(“java.io.FilePermission”“Image.jpg”“read”)。然而,这些教程都没有提到这一点,他们所说的只是我应该做到以下几点:
import java.applet.*;
import java.awt.*;
Image img;
//These would go in the paint function
img=getImage(getDocumentBase(),"/Image.jpg"); //I have tried without the slash too
g.drawImage(img,20,20,this);
这就是他们所做的一切,它适用于他们,但它对我不起作用。其他方法太复杂了,只是为了添加一个图像,即使我经历了这样做的工作,它仍然给我“拒绝访问”的消息。还有一种“签署”它的方法,但我真的不认为这会给我所有尝试过的帮助,所以我担心它可能只是另一种浪费的努力。这些教程都没有告诉你让你的applet签名。
我在“build”(也称为bin)文件夹中将图像与类一起使用。
当我包含整个文件路径时程序似乎运行,但即使这样,图像也没有显示。更不用说我不能真正包含来自我自己的计算机的完整路径,因为当我实际将它发送给另一个人时它不会起作用。
拜托,我只是想知道为什么它对我不起作用,但似乎对其他人来说效果很好。那,如果有办法解决这个问题。
这是我正在做的一个例子:
import java.applet.*;
import java.awt.*;
public class JavaProject extends JApplet
{
Image img;
public void init()
{
img=getImage(getDocumentBase(),"/Image.jpg");
}
public void paint(Graphics g)
{
super.paint(g);
g.drawImage(img,20,20,this);
}
}
这是我的HTML文件:
<html>
<head>
<title> My First Web Page </title>
</head>
<body>
<applet code="JavaProject.class" width="400" height="500">
</applet>
</body>
</html>
答案 0 :(得分:0)
根据JApplet java docs方法,getImage(URL url,String name)应该有两个参数:URL-link to picture和String name。
方法getDocumentBase()
是否返回了网址链接?
答案 1 :(得分:0)
如果&#34; build&#34;中的图像,请尝试这个。 (也称为bin)文件夹和类。
import java.awt.Graphics;
import java.awt.Image;
import java.net.URL;
import javax.swing.JApplet;
public class JavaProject extends JApplet {
Image img;
public void init() {
img = getImage(getDocumentBase(), "images/222.png");
// Please ensure that 222.png is placed under bin/images folder directly
}
@Override
public void paint(Graphics g) {
update(g);
}
@Override
public void update(Graphics g) {
g.drawImage(img, 20, 20, this);
}
}
首先尝试使用HTTP URL
URL myURL = new URL("https://www.gravatar.com/avatar/a94613cea642e6e9e2105867bc2e103e?s=32&d=identicon&r=PG&f=1");
img = getImage(myURL);
如果您在Windows下使用Eclipse,请查看下面的屏幕截图:
请查看以下帖子以了解相关信息。
答案 2 :(得分:0)
您必须首先了解除非已签名,否则Applet可能无法从文件系统中读取。它必须使用类路径资源或从其获取的同一位置获取的内容。您必须决定哪些适用于您。如果图像是固定图像,则可以将其作为资源放在类路径中,并使用Class.getResourceAsStream。如果每次都有不同的图片,那么您必须使用HTTP。