# Java mit Swing - Elemente erst nach klick sichtbar



## moc (23. Okt 2006)

hallo Forum,
ich schreibe gerade ein JavaApplet. Das Applet braucht natürlich Buttons etc.
Wenn ich jetzt einen Button erstelle wird dieser beim starten das Applets nicht angezeigt. 
Auch bei JLabel oder andern Elementen habe ich das gleiche Problem.
Erste nachdem ich es angeklickt habe ist es sichtbar!

meine public init():


```
setLayout(null);
JButton b_login = new JButton();
b_login.setText("Login");
b_login.setBounds(45,89,100,200);
b_login.setVisible(true);
add(b_login);
```

warum ist das so?
thx


----------



## André Uhres (23. Okt 2006)

Versuch's mal mit "validate();"


----------



## moc (23. Okt 2006)

hat leider keinen Effekt.


----------



## The_S (23. Okt 2006)

wenns ein repaint() auch nciht macht, poste mal bitte ein KSKB.


----------



## moc (23. Okt 2006)

mit repaint geht auch nicht!
was ist ein KSKB?


----------



## Fatal Error (23. Okt 2006)

Hallo?!?

setVisible(true); gehört ganz am Schluss. Es is klar das dein Button net gleich angezeigt wird wenn du ihn nach setVisible(true) addest...

[EDIT] ups dachte du hast nen JFrame...


----------



## moc (23. Okt 2006)

geht auch nicht wenn wenn man setVisible am ende setzt. ist glaub ich auch egal!


----------



## André Uhres (23. Okt 2006)

moc hat gesagt.:
			
		

> ...was ist ein KSKB?


Klick mal auf den Link in meiner Signatur (Lies mich)


----------



## Gast (23. Okt 2006)

Versuchs mal mit revalidate()...


----------



## moc (23. Okt 2006)

revalidate() gibt es nicht.

hier das KSKB:

```
import java.applet.*;
import java.awt.*;
import java.util.*;
import java.io.*;
import javax.swing.*;

public class Client extends Applet {
	
	public void init(){
		setLayout(null);
		paintLoginForm();
	}
	public void start() {
		
	}
	public void stop(){
		
	}
	public void paint( Graphics g ){
		
	}
	public void paintLoginForm() {
		
		setVisible(true);
		
		JLabel lbl_login = new JLabel();
		JButton b_login = new JButton();
		
		
		lbl_login.setText("<html><font color=black size=15>Login</font></html>");
		lbl_login.setBounds(1, 100, 200, 25);
		lbl_login.setVisible(true);
		
		
		b_login.setText("Login");
		b_login.setBounds(45,89,100,200);
		b_login.setVisible(true);
		
		add(b_login);
		add(lbl_login);	
	}

	
}
```


----------



## Fatal Error (23. Okt 2006)

ich hab zwar noch wie was mit applets gemacht, aber mit swing, und da lernt man ja: setVisible(true); ganz am schluss.

probier mal das setVisible(true); ganz ans ende der methode zu schreiben.


----------



## moc (23. Okt 2006)

geht nicht


----------



## The_S (23. Okt 2006)

setVisible kannst dir ganz sparen. Aber warum überschreibst du die paint-Methode? Mach das ma raus oder füg zumindest ein 


```
super.paint(g);
```

ein.


----------



## moc (23. Okt 2006)

haha! super es geht.
danke


----------

