Ausgabe/Anzeigen in JTextfield

Padawan

Erfahrenes Mitglied
Hallo alle zusammen,

ich weiss nicht ob es dass richtige Forum mit jTextField ist.

Ich habe die folgende Klasse geschrieben:
Java:
package sensor;
public class SensorSimu implements Sensor_inf<Integer> {

    static private Integer zustandsWert = 0;

    @Override
    public void setValue(Integer newValue) {
       zustandsWert = newValue;
    }
    @Override
    public Integer getValue(){
        return zustandsWert;
    }
}

In einer anderen Klasse berechne ich irgendwelche werte und Übergebe die dann der Klasse Sensor über setValue.
Meine frage ist, wie kann man den wert dann in einer JTextField, die in einer weiteren (JFrame)Klasse implementiert ist ständig anzeigen lassen?

Grüße
Padawan
 
Zuletzt bearbeitet:
Moin,

Meine frage ist, wie kann man den wert dann in einer JTextField, die in einer weiteren (JFrame)Klasse implementiert ist ständig anzeigen lassen?
Verstehe jetzt die Frage nicht wirklich .....

Grundlegend dort einfach mit "getValue()" den Wert holen und mit "myTextfield.setText( ... )" setzen ?

Aber hat es einen bestimmten Grund, dass Deine Variable vom Typ "Integer" ist :confused:

Gruß
Klaus
 
Hallo Klaus,

Grundlegend dort einfach mit "getValue()" den Wert holen und mit "myTextfield.setText( ... )" setzen ?

So habe ich es auch gemacht. Das Sache ist die, dass sich der Wert in getValue() ständig ändert, z.B alle 1 sekunde.
Die frage ist halt, ob sich die Ausgabe auf der GUI auch gleich mit ändert (z.B. alle 1 sekunde)o der man z.B. actionListener und actionEvent oder ein Timer einbauen muss.


Das mit Integer hat keinen bestimmten grund :-(

Grüße
Padawan
 
Hallo,

da musst du tatsächlich einen Listener ranhängen, der einmal gesetzte Wert eines Textfeldes ändert sich nur beim Neusetzen.

Gruß,
Martin
 
Hallo,
ich hab ein bisschen rumprobiert, gibt es eigl eine Möglichkeit z.B. mit einem Timer die Events zu senden? :-(

grüße
Padawan
 
Morgen,
Es sollen ja die Sensorwerte auf die GUI ausgegeben werden, nicht nur ein paar mal, sondern ständig. Die GUI muss ja deswegen "aktuallisiert" werden. Die frage ist halt die gehen soll. und da ist mir Timer eingefallen.

grüße
padawan
 
Hallo,

mir fallen da spontan zwei Möglichkeiten ein:
1. Bei jedem Update des Wertes auch das Textfeld updaten (Wie genau ändert sich der Wert?)
2. Was du schon gesagt hast: Einen Timer einbauen, der ständig aktualisiert, in etwa:
Java:
int delay = 1000; //1s = 1000ms
ActionListener textUpdate = new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
          textField.setText(yourvalue);
      }
};
new Timer(delay, textUpdate ).start();
EDIT: Siehe auch: http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/Timer.html

Persönlich fände ich aber die 1.Variante schöner, da dort die Oberfläche nur aktualisiert wird, wenn es auch benötigt wird.

Gruß,
Martin
 
Hi,
die werte werden in einer anderen Klasse berechnet, wenn der aktuelle Sensorwert ungleich des Sollwertes ist.

grus
Padawan
 
Dann würde ich dir vorschlagen, dass du diese Klasse zum Observable machst und beim Ändern des Wertes ein Event feuerst, welches von der Klasse mit deinem Textfeld (als Observer) verarbeitet wird und dabei der Wert auch in der Oberfläche geändert wird.

Für das Observer-Pattern einfach mal googeln, da gibt's viele Beispiele dazu.
(Grundlegend hast du ein Observable, welches "beobachtet" wird und Events abfeuert sowie einen Observer "Beobachter", der diese Events behandelt)


Für eine schnellere Implementierung kannst du auch einfach aus deiner Berechnungs-Klasse eine Methode aufrufen, die das Textfeld aktualisiert, das ist allerdings nicht so schön :p

Gruß,
Martin
 
Zurück