[英]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位於同一目錄中嗎?
代碼的第二行(更改后)將嘗試將images.jpg
文件加載到與HTML相同的目錄中。
當然,您可能需要添加MediaTracker
來跟蹤圖像的加載,因為Applet.getImage()
方法立即(現在)返回,但異步加載(之后)。
試試這個確切的實驗:
將此源另存為${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.