Halli Hallo,
zur Zeit versuche ich in JavaFX einen Observer über zwei Klassen zu implementieren. Ich habe ein Model, einen Controller und eine View.
Im Model gibt es eine Methode, welche über eine While-Schleife eine Varible immer wieder erhöht.
In der View möchte ich diese nach jedem Durchgang der Schleife in einem Label angezeigt bekommen.
Der Controller soll dies letztendlich übernehemen in dem er dem Label die geänderte Variable aus dem Model zuweist. Für jeden Durchgang der Schleife natürlich.
Geplant war von mir das Observer-Muster zu nutzen nur denke ich, dass ich es nicht richtig eingebaut habe. Zur Zeit wird mir das Label erst nachdem die While Schleife komplett durchgelaufen ist angezeigt bzw. aktualisiert und auch nur der letzte berechnete Wert der Variable.
Ist es vielleicht ein generelles Problem, wenn man jeden Wert, den eine Schleife bei jedem Durchlauf berechnet zu überschreiben und dann wieder anzeigen zu lassen?
Hier ein paar Code-Schnippsel:
Model:
Controller(unwichtiges ausgelassen):
Im Moment läuft es soweit, dass wenn ich das Programm starte und die Schleife alle durchläufe durchlaufen hat zeigt er mir nichts an. Beim zweiten Start zeigt er mir nachdem alles durchlaufen ist lediglich den letzten berechneten Wert an.
Ziel ist es, dass das label permanent auf den neuesten Stand aktualisiert wird.
Ich hoffe mir kann jemand helfen.
Vielen Dank!
zur Zeit versuche ich in JavaFX einen Observer über zwei Klassen zu implementieren. Ich habe ein Model, einen Controller und eine View.
Im Model gibt es eine Methode, welche über eine While-Schleife eine Varible immer wieder erhöht.
In der View möchte ich diese nach jedem Durchgang der Schleife in einem Label angezeigt bekommen.
Der Controller soll dies letztendlich übernehemen in dem er dem Label die geänderte Variable aus dem Model zuweist. Für jeden Durchgang der Schleife natürlich.
Geplant war von mir das Observer-Muster zu nutzen nur denke ich, dass ich es nicht richtig eingebaut habe. Zur Zeit wird mir das Label erst nachdem die While Schleife komplett durchgelaufen ist angezeigt bzw. aktualisiert und auch nur der letzte berechnete Wert der Variable.
Ist es vielleicht ein generelles Problem, wenn man jeden Wert, den eine Schleife bei jedem Durchlauf berechnet zu überschreiben und dann wieder anzeigen zu lassen?
Hier ein paar Code-Schnippsel:
Model:
Code:
public class Raum extends Observable{
String sensorwert = "0.0";
public String getsensorwert(){
return sensorwert;
}
public void temperaturverlauf() {
while(zeit < 20){
//Viele Berechnungen
sensorwert = String.valueOf(raumTemp[Array.getLength(raumTemp)-1][Array.getLength(raumTemp[0])-1][1]);
setChanged();
notifyObservers();
zeit++;
}
}
Controller(unwichtiges ausgelassen):
Code:
public class FXMLDocumentController implements Initializable, Observer {
Raum r1 = new Raum();
@FXML
private Label aktuelleTemperatur;
@Override
public void initialize(URL url, ResourceBundle rb) {
@Override
public void update(Observable o, Object arg) {
aktuelleTemperatur.setText(r1.getsensorwert());
}
}
Im Moment läuft es soweit, dass wenn ich das Programm starte und die Schleife alle durchläufe durchlaufen hat zeigt er mir nichts an. Beim zweiten Start zeigt er mir nachdem alles durchlaufen ist lediglich den letzten berechneten Wert an.
Ziel ist es, dass das label permanent auf den neuesten Stand aktualisiert wird.
Ich hoffe mir kann jemand helfen.
Vielen Dank!