Slider - Wert übergeben und überschreiben

Ellefant

Mitglied
Hallo Leute,

ich bin neu hier und habe eine Frage bezüglich dem Slider.
Zunächst wird in einem Label die aktuelle Temperatur angezeigt.
Mit Hilfe dem Slider kann ich die Solltemperatur einstellen und möchte diesen in vorherigem Label ausgeben. Soweit habe ich dies auch geschafft.
Sobald ich die Temperatur eingestellt habe möchte ich, dass im Label wieder die Aktuelle Temperatur angezeigt wird. Jedoch erhalte ich hier eine Fehlermeldung.
1623500201670.png
Habt ihr eine Idee, wie ich das richtig lösen kann?
 
Also ohne Code kann man nur erklären, was die Fehlermeldung bereits aussagt:

Du hast den Wert gebunden an eine Variable und versuchst nun, den Wert direkt zu setzen.

Also wenn Du den Wert unabhängig von der gebundenen Variable ändern willst, musst Du das Binding aufheben (unbind() Aufruf) oder du musst statt dem Wert eben die Variable setzen. Dann ändert sich das Label automatisch mit.
 
So überschreibe ich das Label mit der Solltemperatur mit Hilfe dem Slider
@FXML
public void sliderMouseClicked(){
labelTemp.textProperty().bind(sliderTemp.valueProperty().asString());
}
 
OK, jetzt verstehe ich schon mal den Fehler. Vielen Dank.

Aber ich verstehe noch nicht wie ich das unbind() anwende.

@FXML
public void sliderMouseClicked(){
labelTemp.textProperty().bind(sliderTemp.valueProperty().asString());
}

Folgendes wird jede Sekunde ausgeführt:
unbind(labelTemp);
labelTemp.setText(model.currentdata.getCurrentTemp().toString());

Aber so wie ich das mit dem unbind versucht hätte ist falsch.
 
Also mir fehlt der Überblick, was genau Du da überhaupt versuchst. Es scheint mir aber, dass Du das nicht gut durchdacht hast und das Problem scheint ein Problem von Deinem Ansatz zu sein. Vermutlich ist das Binding, das Du da zum Slider gemacht hast, schlicht falsch, denn das Label soll nicht den Wert des Sliders anzeigen.

Generell trennt man Model und View - dabei ist es egal, ob es nach MVC oder MVVM geht. Dann hast Du ein Binding von der View zu dem Model (Oder vom View zum ViewModel) und dann kannst Du das Model anpassen und die UI passt sich automatisch an.

Aber Du musst genau überlegen, was Wo angezeigt werden soll und wo der Wert her kommen soll. Wenn Du ein Binding hast, dann kannst du nur die Stelle anpassen, zu der das Binding geht. Wenn Du das Control direkt anpassen willst, dann bekommst du den Fehler, dass dies nicht geht.
 

Zurück
Oben