Zufalls Animation

Glema

Mitglied
Hallo ich habe da ein kleines Darstellungsproblem.
Es geht darum in einem Label oder einem Textfeld nacheinander 20 Randomwerte anzuzeigen.
Die einzelnen werte sollen dann immer einen bestimmten Zeitraum zusehen sein und dann durch das nächste ersetzt werden.
Ohne GUI mit einem System.out.println Befehl konnte ich das bewerkstelligen in dem ich eine leere For-Schleife eingesetzt habe die einfach hochzählt bis zu einem bestimmten Wert und dann mit der nächsten Ausgabe weitermacht.
Wenn ich dies jedoch in einer GUI aufrufe um nun die Ausgabe in einen Label oder so zusetzen, werden die ersten 19 Zahlen nicht angezeigt und am Ende dann nur die letzte Zahl angezeigt wird.

Kann mir jemand nen Tipp geben wo das Problem bei der Ausgabe in einem Label oder in einem Textfeld liegen könnte?
Gibt es eine möglichkeit wie wait() um die For Schleife zuersetzen?
 
J

javaPanther

Gast
Lösen könntest du das indem du eine Schleife baust bei der du den Text ändern lässt und einfügst.

Java:
int i = 0;
while(i<20){

    i++;

    label.setText("....");

    try { 
         Thread.sleep(Zeit die du dazwischen haben willst); 
    } catch (InterruptedException e)  {
          System.err.println(e);
    }

}
 

Glema

Mitglied
mmh Danke damit lässt sich zumindestens die Zeit besser bestimmen =)
Aber das Problem bleibt er zeigt nicht die ersten 19 Werte an =/
 
J

javaPanther

Gast
In welcher Form liest du denn die Werte ein? Mit etwas Glück könntest du vielleicht das entsprechende Codefragment posten.
 

Glema

Mitglied
Java:
		for(int i = 0; i<20; i++){
			int zufall = (int)(Math.random() * 20);
			AusgabeT.setText(Integer.toString(zufall));
			try {
				Thread.sleep(200);
				} catch (InterruptedException e) {
				System.err.println(e);
				}
		}
 

javaPanther

Mitglied
Also bei mir funktionierts:

Java:
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Test
extends JFrame{
	
	JLabel label;
	
	public Test()
	{
	    this.setBounds(0,0,500,300);
	    JPanel panel = new JPanel();
	    this.add(panel);
	    label = new JLabel ("Test");
	    panel.add(label);
	    this.addWindowListener( new WindowAdapter() {
	    public void windowClosing(WindowEvent e) {
	        System.exit(0);
	    }
    });
	}
	
	public void test(){
		for(int i = 0; i<20; i++){
            label.setText(""+new Random().nextInt(100));
            try {
                Thread.sleep(200);
                } catch (InterruptedException e) {
                System.err.println(e);
                }
        }
	}
	
	public static void main(String[] args) {
    	Test ctrl = new Test();
    	ctrl.test();
    }
}
 
Zuletzt bearbeitet:

Ein Keks

Bekanntes Mitglied
Nur dass man mit Thread.sleep den ganzen EDT lahm legt. Wie wärs stattdessen ganz einfach mit einem swing.Timer?
Java:
int i = 0;
Timer timer = new Timer(200, new ActionListener(){
  @Override
  public void actionPerformed(ActionEvent e){
    label.setText(...);
  }
});
timer.start();
 

Glema

Mitglied
@Ein Keks:

Ok damit funktioniert jetzt schon mal die Ausgabe ansich danke =)
Aber jetzt zwei ganz doofe fragen:
1: was ist mit @override gemeint?
2: und die wahrscheinlich noch dümmere Frage wie stop ich den Timer mit timer.stop(); nach 20 durchläufen wieder 0o
 

Ein Keks

Bekanntes Mitglied
kleines Beispiel:
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;

public class TimerWindow extends JFrame{
	
	private Timer timer = null;
	private JLabel label = new JLabel();
	private int counter = 0;
	
	public static void main(String[] args) {
		new TimerWindow().setVisible(true);
	}
	
	public TimerWindow(){
		super("Timer");
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setSize(200,100);
		label.setHorizontalAlignment(JLabel.CENTER);
		add(label);
		timer = new Timer(500, new ActionListener() {
			@Override //lässt sich nicht compilen falls die nachfolgende Methode keine Methode überschreibt
			public void actionPerformed(ActionEvent e) {
				if (counter < 20){
					int rndNumber = (int)(Math.random() * 20);
					label.setText(String.valueOf(rndNumber));
					++counter;
				}else{
					timer.stop();
				}
			}
		});
		timer.start();
	}
}
 

Glema

Mitglied
super dank dir Keks jetzt hab ichs verstanden und es funktioniert =)

hat aber irgendwer noch ne Idee wieso das mit der Anzeige mit der Forschleife und dem Sleep Befehl nicht funktioniert?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JavaBeginner22 Java 2 Zufalls zahlen generieren. Java Basics - Anfänger-Themen 11
G Zufalls Array summieren Java Basics - Anfänger-Themen 12
3 Zufalls-Zahlen aus ArrayList generieren & auslesen Java Basics - Anfänger-Themen 6
O Java Zufalls-Verteil-Algorithmus Java Basics - Anfänger-Themen 3
R Zufalls String mit Vorgaben Java Basics - Anfänger-Themen 2
Luk10 Bestimmung eines (Zufalls)Ereignis Java Basics - Anfänger-Themen 10
T Zufalls jedoch jede nur einmal Java Basics - Anfänger-Themen 10
apple987123 Zufalls Ratezahl Java Basics - Anfänger-Themen 16
S Zufalls Strings erzeugen Java Basics - Anfänger-Themen 8
G Zufalls Lotto Zahlen Ausgeben Java Basics - Anfänger-Themen 16
G Zufalls werte erhalten Java Basics - Anfänger-Themen 9
H zufalls string und zahl erzeugen Java Basics - Anfänger-Themen 14
S Animation/links-rechts Java Basics - Anfänger-Themen 9
G Animation Timer Nano Time Java Basics - Anfänger-Themen 2
J Animation eines Körpers auf der schiefen Ebene Java Basics - Anfänger-Themen 11
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
D Animation JPanel Java Basics - Anfänger-Themen 1
WetWer Animation JLabel Java Basics - Anfänger-Themen 2
A Animation einer Zahnradpumpe Java Basics - Anfänger-Themen 6
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
K Möglichkeiten um eine einfache Animation darzustellen Java Basics - Anfänger-Themen 7
C Animation nur einmal durchführen Java Basics - Anfänger-Themen 3
N Bilderarray als animation ablaufen lassen?? Java Basics - Anfänger-Themen 6
G Threads SuM Class Animation Java Basics - Anfänger-Themen 13
J .gif Animation Java Basics - Anfänger-Themen 4
J Animation Java Basics - Anfänger-Themen 5
M Animation in einem Multiplayerspiel Java Basics - Anfänger-Themen 3
S Animation nach bestimmter Zeit ausführen Java Basics - Anfänger-Themen 3
T Animation Java Basics - Anfänger-Themen 2
M Animation von Kreisen Java Basics - Anfänger-Themen 15
U Y-Animation Java Basics - Anfänger-Themen 3
K Animation: Ball fällt herunter Java Basics - Anfänger-Themen 2
Luk10 einfach animation Java Basics - Anfänger-Themen 2
H Animation malen! Java Basics - Anfänger-Themen 2
S JTable mit Animation??? Java Basics - Anfänger-Themen 7
B Flash Animation SWF in Java absielen Java Basics - Anfänger-Themen 18
R Probleme mit Animation und der erstellung einer jar Datei. Java Basics - Anfänger-Themen 11
U Animation bleibt leer (weiß) Java Basics - Anfänger-Themen 5
T Animation übermalt panels Java Basics - Anfänger-Themen 6
M Simple Animation funktioniert nicht (JFrame, Canvas, Thread) Java Basics - Anfänger-Themen 6
S Desktop Animation Java Basics - Anfänger-Themen 15
T Abspeichern einer Animation in *.bmp Java Basics - Anfänger-Themen 12
K animation in applet, thread problem (?) Java Basics - Anfänger-Themen 3
K Animation warten lassen Java Basics - Anfänger-Themen 9
F Animation Java Basics - Anfänger-Themen 3
J Animation Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben