MVC Observer While-Schleife

Ratzefummel

Mitglied
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:
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!
 

Jardcore

Top Contributor
Hast du es mal mit Bindings probiert. Dein "sensorwert" wäre dann ein StringProperty und könnte an das textProperty des Labels gebunden werden.

Das ganze würde ich so realisieren, dass du eine Methode im Model hast:
Java:
public StringProperty sensorwertProperty() {
    return sensorwert;
}
Hier ist es Konvention das du den Namen der Variable schreibst und dahinter ein Property hängst. Ich glaube final ist auch gewünscht. Du kannst auch ein ReadOnlyStringProperty verwenden, wenn du nicht willst das noch etwas nachträglich von außen verändert wird.

Und im Controller kannst du dann mithilfe des Bindings, sowas anstellen:
Java:
aktuelleTemperatur.textProperty.bind(model.sensorwertProperty);

Oder so ähnlich, musst mal gucken wie genau die Properties heißen.
 

Ratzefummel

Mitglied
Hey,

danke für deine Antwort.
Also mit Bindings habe ich es auch bereits probiert. Da besteht leider das selbe Problem. Ich denke, dass es mit der While Schleife zu tun haben muss und das dadurch die ständige Verbindung zum Label unterbrochen wird. Den Observer habe ich getestet und er funktioniert auch soweit.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Observer Pattern JLabel ändern AWT, Swing, JavaFX & SWT 7
U JAVAFX observer und threads AWT, Swing, JavaFX & SWT 1
L JavaFX Java FX Anwendung nach MVC mit Observer Pattern AWT, Swing, JavaFX & SWT 15
F JavaFX MVC und Observer AWT, Swing, JavaFX & SWT 4
N Observer: update ruft nicht repaint auf AWT, Swing, JavaFX & SWT 0
O Swing AbstractTableModel - Observer.. AWT, Swing, JavaFX & SWT 14
K Swing und MVC + Observer AWT, Swing, JavaFX & SWT 4
G JTree - Observer oder Listener? AWT, Swing, JavaFX & SWT 6
D ComboBox-Model mit Observer AWT, Swing, JavaFX & SWT 3
D Event in Fenster ausgeben + Observer + kein Plan AWT, Swing, JavaFX & SWT 2
Rudolf AWT Observer mit AWT AWT, Swing, JavaFX & SWT 5
P Observer und GUI Update AWT, Swing, JavaFX & SWT 2
S Observer Problem AWT, Swing, JavaFX & SWT 2
D Wie mehrere Grafiken auf JPanel anzeigen lassen? (Observer pattern?) AWT, Swing, JavaFX & SWT 24
hdi Observer-Pattern bei JPanel nicht möglich? AWT, Swing, JavaFX & SWT 7
G eigenen Observer schreiben AWT, Swing, JavaFX & SWT 6
F Observer vs Listener AWT, Swing, JavaFX & SWT 2
F Eigener Observer? AWT, Swing, JavaFX & SWT 4
Z Observer/Observable und SWT AWT, Swing, JavaFX & SWT 2
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
X Swing Anwendung regaiert auf keine Buttons mehr wärend while(scanner.hasNextLine()) ausgeführt wird. AWT, Swing, JavaFX & SWT 4
raptorrs JTextfelder werden in while-Schleife nicht aktualisiert AWT, Swing, JavaFX & SWT 5
G while schleife - keylistener AWT, Swing, JavaFX & SWT 4
F Frame wird nicht angezeigt nach while-Schleife AWT, Swing, JavaFX & SWT 3
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
G Schleife verlangsamen AWT, Swing, JavaFX & SWT 3
ms_cikar Update swingUtilities Repaint in der Schleife AWT, Swing, JavaFX & SWT 3
W fillRect() in Schleife spukt nur Fehler aus AWT, Swing, JavaFX & SWT 3
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
L JTabbedPane mit for Schleife aufbauen AWT, Swing, JavaFX & SWT 4
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
C SWT Tab in Schleife AWT, Swing, JavaFX & SWT 9
C Schleife auf Mausklick warten lassen AWT, Swing, JavaFX & SWT 6
S Farbverlauf in for-Schleife berechnen AWT, Swing, JavaFX & SWT 4
H Swing Komponenten per Schleife auf JFrame AWT, Swing, JavaFX & SWT 4
F JLabel mittles Schleife einbinden?? AWT, Swing, JavaFX & SWT 3
D Swing JLabels in einer Schleife aktualisieren AWT, Swing, JavaFX & SWT 2
S Problem mit JLabel (Bewegung in Schleife) AWT, Swing, JavaFX & SWT 7
D Schleife für Button AWT, Swing, JavaFX & SWT 4
R for-Schleife in Applet ausgeben AWT, Swing, JavaFX & SWT 3
H Mit for-schleife die Componenten eines Frames verändern AWT, Swing, JavaFX & SWT 5
A Jedes JTextfield einer klasse in einer foreach schleife abarbeiten AWT, Swing, JavaFX & SWT 3
R jTextField in Schleife ausfuellen AWT, Swing, JavaFX & SWT 4
I Swing repaint wird in for-Schleife aufgerufen - was passiert? AWT, Swing, JavaFX & SWT 12
M Button funktioniert nicht mehr wenn Schleife läuft AWT, Swing, JavaFX & SWT 3
R zweidim. JButton-Array in Schleife -> NullPointerExceptio AWT, Swing, JavaFX & SWT 2
S JMenu und ActionListener per Schleife erzeugen AWT, Swing, JavaFX & SWT 3
R das letzte JLabel in der Schleife will nicht an seinen Platz AWT, Swing, JavaFX & SWT 2
J ActionListener nimmt keine for()-Schleife? AWT, Swing, JavaFX & SWT 4
G For-Schleife AWT, Swing, JavaFX & SWT 4
B Deklaration von vielen Buttons mit Schleife vereinfachen? AWT, Swing, JavaFX & SWT 9
P JRadioButton in Schleife erstellen > wo liegt mein Fehler AWT, Swing, JavaFX & SWT 2
M Schleife mit Button abbrechen AWT, Swing, JavaFX & SWT 4
T JPanel in Schleife anlegen AWT, Swing, JavaFX & SWT 7
F Einlesen von text in textArea mittels for-schleife AWT, Swing, JavaFX & SWT 3
R Grafische Benutzereingabe in For-Schleife AWT, Swing, JavaFX & SWT 8
L vermutlich Problem in meiner for-Schleife AWT, Swing, JavaFX & SWT 6
S Mehrere Buttons in einer Schleife erzeugen . AWT, Swing, JavaFX & SWT 3
G Schleife mit repaint funktioniert nicht. AWT, Swing, JavaFX & SWT 7
A JTable Schleife AWT, Swing, JavaFX & SWT 4
M JDialog in for-Schleife mit Komponenten bestücken AWT, Swing, JavaFX & SWT 6
S JButton über Schleife erstellen AWT, Swing, JavaFX & SWT 4
R Button löst Schleife aus, danach friert die GUI ein ? AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben