Hallo, ich habe ein Problem und komme leider nicht weiter. Ich hatte mal ein Spiel gesehen, wobei man sich in einer bestimmten Zeit eine Zahl einprägen und diese dann nachher wiedergeben musste. Dieses Spiel wollte ich nachprogrammieren und insoweit "verbessern", dass man die Zeit, in der die Zahl sichtbar ist, variieren kann.
Leider klappt es aber nicht so, wie ich es möchte. Zu dem Kode unten: Die Methode losgehts ist eine Framemethode und wird über einen Button aufgerufen. Darin wird je nach Größe des Eingabeparameters i eine Zahl zufällig erstellt und sollte dann im Label angezeigt werden. Danach wird ein Threadobjekt erzeugt, darin 2000ms gewartet und am Ende sollte die Zahl im Label durch "**" ersetzt werden.
Mein Problem ist, dass zwar die richtige Zahl pünktlich auf der Console ausgegeben wird, aber im Labelfeld immer nur die "**" erscheinen. Lasse ich die letzte Zeile aber weg, dann erscheint auch die richtige Zahl.
Ich hatte es auch schon mit sowas wie "busy waiting(for-Schleife)" versucht, aber es klappt irgendwie nicht.
Kann mir einer da weiterhelfen?
Vielen Dank schon einmal
Gruss
Durandir
Leider klappt es aber nicht so, wie ich es möchte. Zu dem Kode unten: Die Methode losgehts ist eine Framemethode und wird über einen Button aufgerufen. Darin wird je nach Größe des Eingabeparameters i eine Zahl zufällig erstellt und sollte dann im Label angezeigt werden. Danach wird ein Threadobjekt erzeugt, darin 2000ms gewartet und am Ende sollte die Zahl im Label durch "**" ersetzt werden.
Mein Problem ist, dass zwar die richtige Zahl pünktlich auf der Console ausgegeben wird, aber im Labelfeld immer nur die "**" erscheinen. Lasse ich die letzte Zeile aber weg, dann erscheint auch die richtige Zahl.
Ich hatte es auch schon mit sowas wie "busy waiting(for-Schleife)" versucht, aber es klappt irgendwie nicht.
Kann mir einer da weiterhelfen?
Vielen Dank schon einmal
Gruss
Durandir
Code:
public void losgehts(int i){
int j;
int f[] = new int[10];
AFrame.this.c=""; //Stringvariable des Frames
for(j=0;j<i;j++){
f[j]=(int) (10*Math.random());
AFrame.this.c= String.valueOf(AFrame.this.c+""+f[j]);
}
System.out.println(AFrame.this.c); //die kommt pünktlich
AFrame.this.jLabelZahl.setText(""+AFrame.this.c+""); //diese Zahl erscheint niemals
Warten warten = new Warten(AFrame.this); //Threadobject zum Warten von 2000ms
try {
warten.start();
warten.join();
}catch(Exception e){
System.out.println("Ochnö"+e);
}
AFrame.this.jLabelZahl.setText("**"); //dies ist immer schneller, als die eigentliche Zahl
}