簡體   English   中英

如何在Applet中顯示圖像?

[英]How can I display an image in the Applet?

我有一個圖像,我想在applet中顯示它,問題是圖像無法顯示。 我的代碼有問題嗎?

謝謝...

這是我的代碼:

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


 public class LastAirBender extends Applet
 {

 Image aang;

 public void init()
 {

  aang = getImage(getDocumentBase(), getParameter("images.jpg"));
 }

 public void paint(Graphics g) 
 {

    g.drawImage(aang, 100, 100, this);
 }

}
aang = getImage(getDocumentBase(), getParameter("images.jpg"));

我懷疑您做錯了什么,這應該很簡單:

aang = getImage(getDocumentBase(), "images.jpg");

HTML / applet元素的內容是什么? 圖片的名稱是什么? 圖像與HTML位於同一目錄中嗎?

更新1

代碼的第二行(更改后)將嘗試將images.jpg文件加載到與HTML相同的目錄中。

當然,您可能需要添加MediaTracker來跟蹤圖像的加載,因為Applet.getImage()方法立即(現在)返回,但異步加載(之后)。

更新2

試試這個確切的實驗:

將此源另存為${path.to.current.code.and.image}/FirstAirBender.java

/*
<applet class='FirstAirBender' width=400 height=400>
</applet>
*/
import javax.swing.*;
import java.awt.*;
import java.net.URL;
import javax.imageio.ImageIO;

public class FirstAirBender extends JApplet {

    Image aang;

    public void init() {
        try {
            URL pic = new URL(getDocumentBase(), "images.jpg");
            aang = ImageIO.read(pic);
        } catch(Exception e) {
            // tell us if anything goes wrong!
            e.printStackTrace();
        }
    }

    public void paint(Graphics g) {
        super.paint(g);
        if (aang!=null) {
            g.drawImage(aang, 100, 100, this);
        }
    }
}

然后轉到提示並編譯代碼,然后使用源名稱作為參數調用applet viewer。

C:\Path>javac FirstAirBender.java
C:\Path>appletviewer FirstAirBender.java
C:\Path>

您應該在小程序中看到您的圖像,該小程序從左上角以100x100繪制。

1)我們生活在21世紀,那么請用JApplet代替Applet

import java.awt.*;
import javax.swing.JApplet;

public class LastAirBender extends JApplet {

    private static final long serialVersionUID = 1L;
    private Image aang;

    @Override
    public void init() {
        aang = getImage(getDocumentBase(), getParameter("images.jpg"));
    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(aang, 100, 100, this);
    }
}

2)對於Icon / ImageIcon ,尋找JLabel會更好

3)請問什么是getImage(getDocumentBase(), getParameter("images.jpg"));

在那里,我將等待諸如

URL imageURL = this.getClass().getResource("images.jpg");
Image image = Toolkit.getDefaultToolkit().createImage(imageURL);
Image scaled = image.getScaledInstance(100, 150, Image.SCALE_SMOOTH);
JLabel label = new JLabel(new ImageIcon(scaled));

好吧,以上答案是正確的。 這是我用來顯示圖像的代碼。 希望能幫助到你:

/*
    <applet code = "DisplayImage.class" width = 500 height = 300>
    </applet>
*/

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

public class DisplayImage extends Applet
{
    Image img1;

    public void init(){
        img1 = getImage(getCodeBase(),"Nature.jpg" );
    }

    public void paint(Graphics g){
        g.drawImage(img1, 0,0,500,300,this);
    }

}

在上面的代碼中,我們創建一個圖像類對象,並從代碼庫指定的位置獲取圖像。 然后使用drawImage方法繪制圖像。 那些對了解getCodeBase()和getDocumentBase()方法的值感興趣的人可以在paint方法中添加以下代碼。 它們實際上是項目文件夾中src文件夾的位置:-

    String msg;
    URL url=getDocumentBase();
    msg="Document Base "+url.toString();
    g.drawString(msg,10,20);

    url=getCodeBase();
    msg="Code Base "+url.toString();
    g.drawString(msg,10,40);

還有一點需要注意:-確保圖像和類在src文件夾中沒有相同的名稱。 這阻止了我的圖像顯示。

暫無
暫無

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

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