我怎么能从我的Java Applet中绘制图像?

时间:2014-05-11 08:58:57

标签: java image applet

我不确定如何充分表达这一点,但是,我可能已经浏览了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>

3 个答案:

答案 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,请查看下面的屏幕截图:

enter image description here

请查看以下帖子以了解相关信息。

答案 2 :(得分:0)

您必须首先了解除非已签名,否则Applet可能无法从文件系统中读取。它必须使用类路径资源或从其获取的同一位置获取的内容。您必须决定哪些适用于您。如果图像是固定图像,则可以将其作为资源放在类路径中,并使用Class.getResourceAsStream。如果每次都有不同的图片,那么您必须使用HTTP。

相关问题