Bild in Label wird nicht angezeigt

Kanickel

Mitglied
Hallo, ich bin neu hier und hätte ne Frage ich wollte versuchen in ein JLabel ein Bild einzufügen und dieses dann über ein JFrame anzeigen zu lassen.
Java:
public class Spiel {

    public static Icon icon = new ImageIcon( "gfx/playbutton.png" );
    
    public static void main(String[] args) {
        
        JFrame f = new JFrame();
        f.setSize(800, 450);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
        f.setTitle("Spiel");
        f.setResizable(false);       
        f.getContentPane().setBackground(Color.GRAY);
        
        
        
         JLabel l = new JLabel();
        
        l.setLayout(null);
        l.setVisible(true);
        l.setDisabledIcon(icon);
        f.add(l);
}
}


(gfx ist ein Ordner mit dem Bild )
 
Weil du das Bild nirgends verankert hast, du musst dem Label das Bild noch zuweisen. label.setIcon(icon); wieso setDisabeldIcon(icon);
 
Erstmal danke, aber er macht immer noch nicht ich hab das setDisabled(icon) raus (keine Ahnung warum ich das drin hatte) und hab stattdessen
Java:
l.setIcon(icon)
rein.
 
Hmmm, vielleicht geht das, schreib mal untendrunter
Java:
time = new Timer(1,this);
time.start();
über dem Konstruktor Timer time (Achtung der Swing Timer !!! Nicht der UTIL)
und implementiere ActionListener, dann schreibe in der abstarken Methode, welche du implementierst hinein:
Java:
l.repaint();
Java:
DeineKlasse implements ActionListener {
 Timer time; // Der SwingTimer
 public Deine Klasse(){
  blabballa;
  timer = new Timer(5, this);
  time.start()
 }
 public void actionPerformed(ActionEvent e){
  l.repaint();
 }
}
 
Zuletzt bearbeitet von einem Moderator:
die ganzen
.setVisible(true)
sind Murks; .setVisible sollte erst aufgerufen werden, wenn das Fenster "fertig ist" - und nur für das Fenster, nicht für jede Unterkomponente einzeln.

Alternativ sollte man
.repaint();
auch ohne das Timer-Trallala "einfach so" als letzte Anweisung aufrufen können, damit alles neu gezeichnet/angezeigt wird.
 

Neue Themen


Zurück
Oben