Swing Dynamische Controls

nicky83

Mitglied
Hallo,

ich bin Java Einsteiger und habe ein kleines Problem mit dem JFrame. Ich möchte JButtons zur Laufzeit erstellen und auf meinem JFrame anzeigen lassen. Leider werden meine zur Laufzeit erstellten Buttons nicht sofort angezeigt, erst wenn ich mit dem Cursor über diese fahre. Muss ich vielleicht repaint() oder ähnliches aufrufen, nachdem ich die Buttons erstellt habe?

Java:
	public TestArea() {
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 481, 649);
		getContentPane().setLayout(null);
		
		JButton btnAnzeige = new JButton("Anzeigen");
		btnAnzeige.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				ButtonsAnzeigen();
			}
		});
		btnAnzeige.setBounds(10, 11, 455, 23);
		getContentPane().add(btnAnzeige);	
	}
	
	public void ButtonsAnzeigen()
	{
		int k;
		int tmpX = 0;
		int tmpY = 0;
		for(k = 0; k < 4; k++) {
			JButton newBtn = new JButton();
			newBtn.setBounds(tmpX, tmpY, 20, 20);
			getContentPane().add(newBtn);
			tmpX = tmpX + 22;
			if (k==1) { 
				tmpX = 0; 
				tmpY = 22; 
			}	
		}	
	}
 
Muss ich vielleicht repaint() oder ähnliches aufrufen, nachdem ich die Buttons erstellt habe?

Probiers doch aus o0

validate(), revalidate() gleich mal mit dazu versuchen .... bitte einzeln und nich gleich alles auf einmal.

Gruß Vanny
 
Hallo, danke für deine schnelle Antwort!

Leider haben repaint(); und validate(); das Problem nicht gelöst. revalidate() ist scheinbar in diesem Kontext nicht verfügbar, wo hast du das hergenommen?
 
Ich würde sagen: Selbst Schuld ;-)
Da Du keinen LayoutManager benutzt (
Code:
setLayout(null)
) nutzt dir das validate() recht wenig.

Aber vermutlich wird ein repaint() nach dem Einfügen der Buttons helfen.
 
Nein, ein repaint hilft nicht - sagte ich bereits. Dann werde ich mir das mit dem LayoutManager nochmals anschauen.

//Edit: Hab mich jetzt nochmals informiert. Eigentlich möchte ich kein Layout Manager verwenden, gibt es denn keinen anderen Weg?
 
Zuletzt bearbeitet:
Ok, ich habe das Problem gefunden. Ich hatte am Ende eine Zeile die den jeweiligen Button in ein Button Array eingetragen hat. Der Index des Arrays war Out of Range, jedoch gab es keine Exception. Naja, jetzt gehts jedenfalls - Danke an alle beteiligten! 🙂
 

Zurück
Oben