簡體   English   中英

無法在JFrame中顯示JPEG圖像

[英]Can't get a JPEG Image to display in JFrame

我正在嘗試在JFrame上顯示一個背景圖像,用於我正在編程的小游戲。 圖像是.jpg,我不斷收到這些錯誤:

Exception in thread "main" java.lang.NullPointerException
     at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
     at web.game.Base.<init>(Base.java:45)
     at web.game.Base.main(Base.java:61)

我的代碼是:

Image myimage;

public Base() {
    ImageIcon ii = new ImageIcon(this.getClass().getResource("myimage.jpg"));
    myimage = ii.getImage();
}

public void paint(Graphics g) {

    Graphics2D g2d = (Graphics2D) g;
    g2d.drawImage(myimage, 10, 10, null); 

您可能遇到問題的原因有很多。 最明顯的開始,圖像不存在(或者至少不存在你認為它存在的地方)

private BufferedImage myImage;

public Board() { 
    try {
        myimage = ImageIO.read(this.getClass().getResource("/myimage")); 
    } catch (IOException exp) {
        exp.printStackTrace();
    }
} 

protected void paintComponent(Graphics g) { 
    super.paintComponent(g);
    if (myImage != null) {
        Graphics2D g2d = (Graphics2D) g; 
        g2d.drawImage(myimage, 10, 10, this); 
        System.out.println("Background Image"); 
    }
} 

您可能會發現執行自定義繪畫閱讀/加載某些用途的圖像

使用getResource您有兩個(基本)選擇。 相對或絕對。

使用相對路徑,類加載器將根據類的上下文開始搜索。 因此,如果您的圖像位於項目的根文件夾中,但您的類位於子文件夾(包)中,則相對路徑將不起作用,因為類加載器將從類所在的位置開始搜索。

絕對路徑將允許您從類路徑的根搜索,這將更有幫助,尤其是在您的情況下。

嘗試這樣的事情,看看你得到了什么......

System.out.println(TestReference.class.getResource("myimage.jpg"));
System.out.println(TestReference.class.getResource("/myimage.jpg"));

暫無
暫無

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

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