display

Status
Nicht offen für weitere Antworten.

riaat

Mitglied
Hallo,
ich möchte ein kleines Fenster erstellen, dass jede Sekunde einen Wert übergeben bekommt und diesen anzeigt, quasi ein Uhrendisplay. Welche Art von Fenster ist dafür am besten geeignet? Ich habe einen JFrame benutzt und darin ein JTextArea eingebettet, aber das lief nicht so richtig...
Danke-Richard
 

thE_29

Top Contributor
Was lief den nicht?!

Du kannst halt nur ein JFrame oder JDialog nehmen und ein JLabel oder JTextArea reinlegen..

Poste mal deinen Code!
 

riaat

Mitglied
Das Problem war, dass das JTextArea nicht aktualisiert. Es wird nur der 1. Wert aus der while-schleife angezeigt.
Ich weiß auch nicht wie man es geschickt anstellt die Werte zu übergeben, da in meiner while schleife min. einmal pro Sekunde ein Wert erzeugt wird. Ich will ja nicht jedes mal ein JTextArea erstellen, oder muss ich das?

Code:
//  Fenster für ScanLaufzeit
    JFrame lzFrame= new JFrame("Zeit");
	lzFrame.setBounds(500,600,300,300);
	lzFrame.setVisible(true);

while(){
analysZeit=new JTextArea(Integer.toString(counterT));
				analysZeit.setVisible(true);
				analysZeit.setOpaque(true);
                                analysZeit.setSize(200,200);
				lzFrame.add(analZeit);
				}
 

thE_29

Top Contributor
Naja, du addest jedes mal eine neue Komponente...

Ob das intelligent ist?!

Außerdem hätte das Programm eine CPU Auslast von 100% da die while Schleife dauernd läuft...
 

WieselAc

Top Contributor
Mit etwas umkopieren:

Code:
//  Fenster für ScanLaufzeit
   JFrame lzFrame= new JFrame("Zeit");
   lzFrame.setBounds(500,600,300,300);

   analysZeit=new JTextArea(Integer.toString(counterT));
   analysZeit.setOpaque(true);
   analysZeit.setSize(200,200);
   lzFrame.add(analZeit);

   lzFrame.setVisible(true);

    while(){
       analysZeit.setText(Integer.toString(counterT));
       repaint();
    }

Löst aber die sache mit dem busy waiting immer noch nicht.
 

André Uhres

Top Contributor
Nimm einen Timer. Zum Beispiel:
Code:
       new javax.swing.Timer(1000, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                analysZeit.setText(Integer.toString(counterT++));
            }
        }).start();
 

thE_29

Top Contributor
Es gibt auch noch den java.util.Timer der halt bisi anders läuft, aber auch das gleiche Ergebnis hätte! (nur so nebenbei ;))
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben