簡體   English   中英

我應該如何從Java Applet繪制圖像?

[英]How am I supposed to draw an image from my Java Applet?

我不確定如何完整地表達這一點,但是,我大概瀏覽了10頁有關此主題的Google鏈接,但沒有一個幫助我解決了問題。

我以為這很簡單,我只是想像其他任何形狀一樣向我的Java applet的paint函數添加圖像,但這對我來說真是一場噩夢。

問題是,每次我嘗試運行drawImage函數時,它總是說Access Denied(“ 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);

這就是他們所做的一切,並且對他們有用,但對我而言卻無效。 為了添加圖像,其他方法太復雜了,即使我辛苦地做這些事情,它也總是給我“訪問被拒絕”的信息。 也有“簽名”的方法,但是考慮到我的所有嘗試,我真的認為這無濟於事,因此,恐怕這可能只是另一項浪費的工作。 這些教程甚至都沒有告訴您對小程序進行簽名。

我將圖像和類一起放在“ 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>

根據JApplet的java docs方法,getImage(URL url,String name)應該具有兩個參數:URL鏈接到圖片和String name。

方法getDocumentBase()一個URL鏈接嗎?

如果“ build”(也稱為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,請查看以下屏幕截圖:

在此處輸入圖片說明

請在下面的帖子中查看以獲得對此的一些了解。

您必須首先了解到,除非經過簽名,否則Applet可能不會從文件系統中讀取。 它必須使用類路徑資源或從相同的位置獲取的東西。 您必須決定哪些適用於您。 如果圖像是固定圖像,則可以將其作為資源放置在類路徑中,並使用Class.getResourceAsStream。 如果每次都是不同的圖像,則必須使用HTTP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM