Frame-Label-Problem

VBKenner

Mitglied
Also folgendes Problem:
Code:
  package tiger;
  import javax.swing.*;
  

  public class Main {
  	

  	public Main() {
  	}
  	

  	public static void main(String[] args) {
  		JFrame mainFrame = new JFrame("Tiger");
  		mainFrame.setSize(400, 500);
  		mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  		
  		mainFrame.setVisible(true);
  		
  		JLabel helloTiger = new JLabel("Hello Tiger User");
  		mainFrame.getContentPane().add(helloTiger);
  
  
  	}
  	
  }
Bei diesem Code zeigt er zwar ein großes Frame an, aber nicht das Label.

Wenn ich einfach nocheinmal
Code:
	 mainFrame.setVisible(true);
an den code anhänge funktioinert zwar alles so wie es soll, aber das kann doch nicht die Lösung sein oder? Dann müsste man ja andauernd setVisible() verwenden wenn z.B. abgefragt werden würde nacheinander, ob man ein mehr Label erstellen will. Man könnte dann denke ich ganz zum Ende nocheinmal setVisible() schreiben aber was wenn zwischen den abfragen schon die Label angezeigt werden müssten?
 
Erzeug das Label schon vorher und fügs dem Frame hinzu, allerdings mit leerem Text. So mußt du nur den Text später ändern, um etwas anzuzeigen, nicht das Label neu erstellen.
 
Und was ist wenn es sich um mehrere Labels handelt, die vllt. gar nicht hätten erstellt werden müssen?
 
Zuletzt bearbeitet:
Moin,
also prinzipiell sollten schon alle zu zeichnenden Komponenten vor dem setVisible() angeleg werden. Wenn "nachher" etwas hinzugefügt wird, sollte ein repaint() reichen. Bedenke, dass in letzterem Fall das Verhalten je nach verwendetem Layoutmanager unterschiedlich ausfallen kann (NullLayout, FlowLayout z.B.).
 
Zurück