Bild auf JLabel wird nicht angezeigt

  • Themenstarter Themenstarter Joelle123
  • Beginndatum Beginndatum
J

Joelle123

Gast
Was ist den hier dran falsch? Es zeigt keinen Fehler an aber es zeigt mir kein Bild:

Java:
        super("Fenster");
        setSize(1000,1000);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(null);
        ImageIcon ii = new ImageIcon("Spielerschuss.gif");
        setVisible(true);
        
        l = new JLabel(ii);
        l.setLocation(200,200);
        l.setSize(100,100);
        l.setVisible(true);
        add(l);
 
Dann zeig doch mal noch ein klein bisschen mehr Code. Wie gesagt, das setVisible(true) solltest du beim JFrame erst ganz zum Schluss aufrufen. Und setLayout(null) ist auch nicht so prickelnd. Nimm lieber einen LayoutManager.
 
also der Code funktioniert auch so aber das Visible trotzdem ans Ende 🙂
Ich denke eher, dass du das Bild einfach im falschen Ordner hast und das gar nicht geladen wird.

falls du Eclipse benutzt, muss das Bild in deinem Projekt Ordner liegen, wenn du es so lädst

ps. und wie mein Vorgänger schon sagt, Null- Layout is nicht so toll 😉



kannst ja mal sowas machen:

Java:
ImageIcon ii = new ImageIcon("Spielerschuss.gif");
System.out.println(ii.getIconHeight());

wird wahrscheinlich -1 sein, da es gar nicht geladen wird das Bild
 
Zuletzt bearbeitet:
Danke für die hilfe! 😀 ich bin so ein De/pp ich hatte die paint methode noch da, die da eig. nicht da sein sollte!
 
Hallo,

die Möglichkeit gibt es.
Das sog. "null"-Layout ist auch ein Layout. Das sog. AbsoluteLayout - dort musst du deine Componenten über den Befehl "setBounds(int x,int y,int width,int height)" positionieren.

Ich hoffe ich konnte helfen.

Ist grundsätzlich schon richtig, allerdings kann es mit dem Null-Layout immer mal wieder zu Problemen kommen. Wenn man nicht wirklich vor hat Java zu lernen ist null Layout sicherlich ausreichend, aber zu empfehlen sind ganz klar "richtige" Layoutmanager.

Wie gibt man sonst die Höhe/Breite ohne Layout(null) an? Gibts da ein Beispiel?

Bei einem Layoutmanager musst du keine Größe der Komponente festlegen, das macht nämlich der Layoutmanager für dich. Dadurch werden die Komponenten immer dynamisch angepasst, wenn man beispielsweise die Größe des Fensters ändert. Außerdem ist ein GUI mit Layoutmanager leichter erweiterbar als einer mit Null-Layout.

Mehr dazu siehe hier: A Visual Guide to Layout Managers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
 
Ist grundsätzlich schon richtig, allerdings kann es mit dem Null-Layout immer mal wieder zu Problemen kommen. Wenn man nicht wirklich vor hat Java zu lernen ist null Layout sicherlich ausreichend, aber zu empfehlen sind ganz klar "richtige" Layoutmanager.



Bei einem Layoutmanager musst du keine Größe der Komponente festlegen, das macht nämlich der Layoutmanager für dich. Dadurch werden die Komponenten immer dynamisch angepasst, wenn man beispielsweise die Größe des Fensters ändert. Außerdem ist ein GUI mit Layoutmanager leichter erweiterbar als einer mit Null-Layout.

Hey Fab1,

mir ist das bewusst, ich habe nur gezielt auf die Frage geantwortet. 🙂
Die Frage war nicht nach anderen Möglichkeiten, sondern lediglich ob bzw. wie man die Components bei einem null-Layout anordnet.
 
Null Layout is evil:

Code des Frame-Konstruktors mit Layout Manager:
Java:
ImageIcon icon=new ImageIcon("pfadDesBildes");
JLabel label=new JLabel(icon);
add(label);
pack();
setVisible(true);

Code des Frame-Konstruktors ohne Layout Manager (null Layout):
Java:
ImageIcon icon=new ImageIcon("pfadDesBildes");
JLabel label=new JLabel(icon);
add(label);
label.setBounds(0,0,icon.getImage().getWidth(),icon.getImage().getHeight());
setBounds(0,0,label.getWidht()+5,label.getHeight()+33);
setVisible(true);

Wie du siehst hast du komplizierteren und längern Code wenn du null layout verwendest; obendrein sieht es auch noch schlechter aus. Ausführlicheres Beispiel im Link meiner sig 🙂
 

Zurück
Oben