簡體   English   中英

幫助在Java小程序中顯示圖像

[英]Help displaying an image in a java applet

下面是一個簡單的小程序,用於顯示單張圖片。 代碼編譯正常,applet加載但圖像文件永遠不會被繪制到applet。 我認為它無法使用this.getImage(appletBaseURL,filename)找到圖像; 我將圖像文件存儲在與此軟件包關聯的所有文件夾中,但仍然沒有繪制它。

    import java.applet.Applet;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.imageio.ImageIO;


   public class imageTest extends Applet {

    private Image spaceShip;    
    private final String filename = "spaceshipcropped.jpg";        
    public void init() {

        java.net.URL appletBaseURL = getCodeBase();
        File file = new File("spaceshipcropped.jpg");
        try {
            spaceShip = ImageIO.read(file);
        } catch (IOException ex) {
            Logger.getLogger(imageTest.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void paint(Graphics g)
    {
        Graphics2D g2d = (Graphics2D)g;    
        g2d.drawImage(spaceShip, 0,0, null);
    }

    public void update(Graphics g) {
       repaint();
    }
}

在我做了這些改變后,它起作用了。 非常感謝你們的幫助!

  1. 不要在applet中調用setSize() 大小由HTML設置。
  2. 在這個千年里,不要在AWT中編碼。
  3. 傳遞給Swing組件的對象應該是Graphics2D對象,但我從來沒有聽說過Applet的相同內容。 你在檢查Java控制台嗎?
  4. 該代碼有一些冗余導入。
  5. paint方法中,檢查圖像是否為null
  6. getImage(URL,String)方法的JavaDocs狀態“此方法始終立即返回,無論圖像是否存在。” 在第3個千年中添加MediaTracker或加入我們並使用ImageIO.read(URL) - 它會一直阻塞,直到加載圖像。

我希望定點6可以解決問題,但也要考慮其他5點。

加上這個

public void update(Graphcs g) {
    repaint();
}

暫無
暫無

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

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