2012-04-03 16 views
1

NORTHの部分に画像を追加したいが、それは私のJPanelの部分がうまくいかない。 どうすればいいですか?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 ")'を使って画像にアクセスすると、 'Application Resources'にアクセスします。どちらの答えもあまりにも良いです:-)あなたはSwingアプリケーションを作るためにIDEを使っていますか?希望この[リンク](http://stackoverflow.com/a/9866659/1057230)より多くのお手伝いをすることができます。 –

答えて

2

あなたImageIconから新しいJLabelを作成し、JPanelにそれを追加します。

+0

プライベートJLabel adamを追加しました。 ' PanelGlowny(){ this.setLayout(new BorderLayout()); ImageIcon imageurl =新しいImageIcon( "logo.jpg"); //画像img = imageurl.getImage(); adam = new JLabel(imageurl); this.add(adam、BorderLayout.NORTH); } ' しかし、どの画像も表示されません。 – user1304098

+2

@ user1304098:すべての書式設定が失われるため、コメントにコードを投稿しないでください。代わりにオリジナルの質問を編集してコードを投稿し、ここでコメントを付けて、これを行ったことをお知らせください。ジェフリーの答えは正しいです(1+)。それを使用しようとすると失敗すると、バグがあり、元の質問に上記の形式のコードを表示する必要があります。 –

4

あなたのコードを修正しました。あなたはそれをそのまま実行できるはずです。基本的にはJPanelImageIconを追加するだけではなりません。最初に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

+0

@nIcE cOwが指摘したように、問題はあなたの '' logo.jpg "'画像が見つからない可能性が最も高いです。最初のテストとして画像に**絶対パス**を入力してみてください。それは間違いなく機能するはずです。次に、 'ImageIcon'コンストラクタに渡すことができる' URL'を得るために、@nIcE cOwのように 'getClass()。getResource(" logo.jpg ")'を使います。 – ulmangt

+0

また、 'getClass()。getResource(" logo.jpg ")'を使うときは、 'logo.jpg'イメージがあなたの[classpath]のどこかにあることを確認する必要があります(http://en.wikipedia.org/wiki/Classpath_(Java)) – ulmangt

関連する問題