# JLabel löschen/überschreiben



## bloodghost (24. Apr 2012)

Hallo leute!

Habe folgendes Problem: Ich will alle 2 sek Zufallszahlen mithilfe von JLabels ausgeben. Läuft eigentlich
korrekt, doch Die Labels werden nicht ersetzt oder überschrieben, sie werden einfach oben drauf geklatscht das dann visuell  nicht besonders schön aussieht. 
Hat jemand eine Idee? Wie kann ich die Labels ersetzten bzw löschen?     


```
public class testzahlen {

	public static void main (String[] args){
		
	JFrame jf = new JFrame();

	jf.setVisible(true);
	jf.setSize(500,500);
	jf.setTitle("Programm Test");
	jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	jf.setLayout(null);
	
	JButton button;
	JLabel zahl;
	
	int z=0;
	
	
	button = new JButton("Zahlen");
	button.setBounds(10,10,100,50);
	jf.add(button);
		
	while (0!=1)
	{
	z=0;
	jf.repaint();
	
for(int i=0; i<8;i++){
		
		double r = (int) (1+10*Math.random());
		zahl = new JLabel(""+r);
		zahl.setBounds(40,z,50,50);
		jf.add(zahl);
		z=z+50;
	
	}
	
	 try{

         Thread.sleep(2000);
        
         
     	}
     catch(InterruptedException e){
     System.out.println("Sleep Interrupted");
     }
	
		

		
	}	
}
```


----------



## HimBromBeere (24. Apr 2012)

Warum setzt du an diese Stelle jedes Mal ein neues Label und überschreibst nicht einfach des alten Labels Text? 
	
	
	
	





```
setText()
```
 dürfte die hierfür notwendige Methode sein.

EDIT: Willst du nur neuen text hinzufügen, kannst du das auch so machen:

```
zahl.setText(zahl.getText() + "anzuhängender Text");
```

IdR. nimmt man übrigens für variablen Text ein JTextField... macht aber erstmal keinen großen Unterschied.


----------



## bloodghost (24. Apr 2012)

habs grad getestet ! Da spuckt er mir immer nur die letzte Zahl aus.
Das mit den anhägen ist mir klar, aber ich möchte immer ersetzen.


----------



## VfL_Freak (24. Apr 2012)

Moin,

mal ganz dumm gefragt ...



bloodghost hat gesagt.:


> ```
> while ( 0 !=1 ) .....
> ```


Was ist denn das für ein lustiges Konstrukt ???:L

Gruß
Klaus


----------



## VfL_Freak (24. Apr 2012)

Moin,


bloodghost hat gesagt.:


> habs grad getestet ! Da spuckt er mir immer nur die letzte Zahl aus


klar, weil das vermutlich so schnell geht, dass Du die ersten Zahlen nicht siehst ...

Wie schaut Den Code denn jetzt konkret aus ???:L

Gruß
Klaus


----------



## bloodghost (24. Apr 2012)

VfL_Freak hat gesagt.:


> Moin,
> 
> mal ganz dum gefragt ...
> 
> ...



Ja einfach ne Endlosschleife! um das gehts ja nicht^^ 

Der Code schaut aus wie oben, halt mit setText()


----------



## SlaterB (24. Apr 2012)

was soll denn passieren? willst du 8 Zahlen nebeneinander, dann brauchst du auch 8 Labels,
vielleicht anders layouted als 'einfach oben drauf geklatscht',
oder in einem Label alle 8 Zahlen mit Abstand schreiben

willst du auch in der 8er-Schleife zeitlichen Abstand, musst du ein sleep einbauen


----------



## bloodghost (24. Apr 2012)

Hi ich brauche 8 zahlen untereinander. Pause in der 8er Schleife ist egal.
Welches Layout würdest du empfehlen?


----------



## SlaterB (24. Apr 2012)

das was du möchtest, du hast doch schon eins, belasse das nur füge die JLabel alle nur EINMAL ein, danach setText(),
von 8 auf 1 Label zu wechseln ist was anderes

dein Hinweis
> Der Code schaut aus wie oben, halt mit setText() 
ist auch unbrauchbar, denn nur mit setText() wäre kein JLabel in der GUI usw., 
das muss immer exakt vollständig durch Code erklärt werden


----------



## bloodghost (24. Apr 2012)

Es läuft jetzt!!! ein super schönes Danke  an HimBromBeere!

Mit JTextfield funzts! 

Vielen dank!


----------



## SlaterB (24. Apr 2012)

1. Schritt: eine GUI mit allen Komponenten einmalig fertig programmieren,
setVisible(true) übrigens unbedingt als letzen Befehl dabei

2. Schritt:
irgendwo später eine Schleife die in den richtigen Labeln setText() aufruft

programmieren werde ich dein Programm nicht, nein


----------

