2011-09-09 53 views
0

下面是一個簡單的applet,用於顯示單個圖片。代碼編譯得很好,並加載了小程序,但圖像文件從未繪製到小程序。我認爲它不能找到使用this.getImage(appletBaseURL,文件名)的圖像;我將圖像文件存儲在與此軟件包相關的所有文件夾中,但仍未繪製它。在java applet中顯示圖像的幫助

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(); 
    } 
} 

我做了改動後,它的工作。非常感謝你的幫助!

+0

Applets的開發或部署並不簡單。在你理解的階段,我會建議避開它們。 –

回答

0

添加此

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

好的,我在paint方法之後添加了一個方法,但它沒有改變它。小程序仍然彈出一個空白的灰色屏幕。 – user519670

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

我認爲定點6可以解決問題,但也可以考慮其他5點。

+0

讓我給這個鏡頭。 – user519670

+0

好的,所以我加了 嘗試{ spaceShip = ImageIO.read(appletBaseURL); (log.getLogger(imageTest.class.getName()).log(Level.SEVERE,null,ex); } 在init方法中。並刪除了以前的getImage(url,string)調用。仍然不顯示圖像。努力糾正你在這裏提到的其他事情。還有其他建議嗎? – user519670

+1

*「其他建議?」* 1)完成其他5分。 2)將更改的代碼作爲編輯添加到您的問題中,而不是將其作爲評論加入。 –