2012-04-03 9 views
1

Ich möchte Bild in NORTH Teil meiner JPanel hinzufügen, aber es funktioniert nicht. Was soll ich tun?Java Swing - wie Bild in Norden von Jpanel hinzufügen

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

Was genau ist Ihre Verzeichnisstruktur? Wo behaltst du deine Bilder? Greifen Sie auf Ihr Image zu, indem Sie 'getClass(). GetResource ("/logo.jpg ") verwenden, um auf' Application Resources' zuzugreifen. Beide Antworten sind zu gut :-) Verwenden Sie eine IDE zum Erstellen von Swing-Anwendungen? Hoffe das [Link] (http://stackoverflow.com/a/9866659/1057230) kann dir mehr helfen. –

Antwort

2

Erstellen Sie ein neues JLabel von Ihrem ImageIcon und dass JPanel zu Ihrer hinzufügen.

+0

Ich habe es privat JLabel adam hinzugefügt; ' PanelGlowny() { this.setLayout (neues BorderLayout()); ImageIcon imageurl = neuer ImageIcon ("logo.jpg"); // Bild img = imageurl.getImage(); adam = neues JLabel (Bildurl); this.add (adam, BorderLayout.NORTH); } ' Aber es zeigt kein Bild. – user1304098

+2

@ user1304098: Bitte versuchen Sie nicht Code in einem Kommentar zu schreiben, da alle Formatierungen verloren gehen. Stattdessen redigiere deine ursprüngliche Frage und poste deinen Code dort, dann platziere einen Kommentar und lass uns wissen, dass du das getan hast. Jeffreys Antwort ist korrekt (1+). Wenn Ihr Versuch, sie zu verwenden, fehlschlägt, haben Sie einen Fehler und müssen den oben formatierten Code in Ihrer ursprünglichen Frage anzeigen. –

4

Hier ist eine funktionierende Änderung Ihres Codes. Sie sollten es so ausführen können, wie es ist. Im Wesentlichen können Sie die ImageIcon nicht einfach zu der JPanel hinzufügen. Sie müssen es zuerst in eine JLabel einpacken.

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

Es zeigt auch nicht mein Bild .. – user1304098

+0

Da @NICE cOw notiert, ist das Problem wahrscheinlich, dass Ihr '" logo.jpg "' Bild nicht gefunden wird. Versuchen Sie, als ersten Test einen ** absoluten ** Pfad zu Ihrem Bild anzugeben. Das sollte definitiv funktionieren. Dann benutze 'getClass(). GetResource (" logo.jpg ")' wie @nIcE cOw, um eine 'URL' zu erhalten, die du in den' ImageIcon'-Konstruktor übergeben kannst. – ulmangt

+0

Wenn Sie 'getClass(). GetResource (" logo.jpg ") verwenden, müssen Sie außerdem sicherstellen, dass sich das' logo.jpg' Bild irgendwo auf Ihrem [Klassenpfad] befindet (http://en.wikipedia.org/wiki/Klassenpfad_ (Java)) – ulmangt