2012-04-03 46 views
1

我想在NORTHNORTH部分添加圖像,但它不起作用。 我該怎麼辦?Java Swing - 如何在Jpanel北部添加圖像

class PanelGlowny extends JPanel 
{  
    PanelGlowny() 
    {   
     this.setLayout(new BorderLayout()); 
     ImageIcon imageurl = new ImageIcon("logo.jpg"); 
     Image img = imageurl.getImage(); 
     this.add(img, BorderLayout.NORTH); 

    } 
} 

public class Formatka extends JFrame 
{  
    private PanelGlowny panel = new PanelGlowny(); 

    public Formatka() 
    {  
     ... 
     add(panel); 
    } 
} 
+2

你的目錄結構究竟是什麼?你在哪裏保留你的圖片?請使用'getClass()。getResource(「/ logo.jpg」)來訪問您的圖像,這就是您訪問'應用程序資源'的方式。這兩個答案都太好了:-)你使用一些IDE來製作Swing應用程序嗎?希望這[鏈接](http://stackoverflow.com/a/9866659/1057230)可以幫助你更多。 – 2012-04-03 17:05:47

回答

2

創建從ImageIconJLabel並添加到您的JPanel

+0

我添加了私人JLabel亞當; ' PanelGlowny(){ this.setLayout(new BorderLayout()); ImageIcon imageurl = new ImageIcon(「logo.jpg」); // Image img = imageurl.getImage();adam = new JLabel(imageurl); this.add(adam,BorderLayout.NORTH); }' 但它不顯示任何圖像。 – user1304098 2012-04-03 16:44:21

+2

@ user1304098:請不要嘗試在評論中發佈代碼,因爲它會丟失所有格式。相反,請編輯您的原始問題並在此處發佈您的代碼,然後在此處發表評論,讓我們知道您已完成此操作。傑弗裏的答案是正確的(1+),所以如果你嘗試使用它失敗了,你會得到一個錯誤,並且需要在原始問題中顯示上面格式良好的代碼。 – 2012-04-03 16:53:13

4

下面是您的代碼的工作修改。你應該可以按原樣運行它。實質上,您不能簡單地將ImageIcon添加到JPanel。您需要先將其包裝在JLabel中。

import java.awt.BorderLayout; 
import java.net.URL; 

import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class Test2 
{ 
    public static class PanelGlowny extends JPanel 
    { 

     public PanelGlowny() 
     { 

      this.setLayout(new BorderLayout()); 

      // incorporated @nIcE cOw's comment about loading classpath resources 
      URL url = getClass().getResource("logo.jpg") 
      ImageIcon imageicon = new ImageIcon(url); 
      JLabel label = new JLabel(imageicon); 

      this.add(label, BorderLayout.NORTH); 

     } 
    } 

    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame(); 

     frame.add(new PanelGlowny()); 

     frame.setSize(400, 400); 

     frame.setVisible(true); 
    } 

} 
+0

它也不顯示我的圖像。 – user1304098 2012-04-03 17:02:58

+0

正如@nIcE注意到的,問題很可能是您的''logo.jpg「'圖像未找到。作爲第一個測試,嘗試爲您的圖像提供一個**絕對**路徑。這應該肯定有效。然後使用'getClass()。getResource(「logo.jpg」)'像@nIcE cOw提到的那樣獲得一個'URL',您可以將其傳遞給'ImageIcon'構造函數。 – ulmangt 2012-04-03 19:42:43

+0

此外,當您使用getClass()。getResource(「logo.jpg」)時,您需要確保'logo.jpg'圖像位於[classpath]上的某處(http://en.wikipedia.org /維基/ Classpath_(JAVA)) – ulmangt 2012-04-03 19:43:34