Closed remo-vonarx closed 5 years ago
Das sieht ja schon ganz gut aus. Auch wenn Sie an einigen Stellen durchaus unübliche Wege gegangen sind, z.B. beim CsTableViewClickEvent anstatt einer einfachen Lambda-Expression.
Auch sollten Sie den Hinweisen von IntelliJ mehr Beachtung schenken. Vor allem wenn etwas gelb hinterlegt ist.
Aber zur Frage: Das Thema werden wir ausführlich im nächsten Unterricht besprechen.
Die Grundüberlegung ist die:
Die aktuelle Ladestation ändert sich ja laufend. Daher muss das Binding auch immer wieder angepasst werden. Es reicht nicht das Binding initial zu setzen, so wie Sie das im CsDetailHeaderPane
in setupBindings
machen.
Statt dessen muss jedes mal wenn sich die chargingStationProperty
in ChargingStationPresentationModel
ändert, das Binding angepasst werden. Das sieht dann z.B. so aus:
@Override
public void setupValueChangedListeners() {
csPM.getChargingStationProperty().addListener((observable, oldValue, newValue) -> {
lblAddress.textProperty().bind(newValue.getAddress() );
});
}
Warum halten Sie sich nicht an die Nameskonventionen für die Zugriffsmethoden auf eine Property?
Normalerweise heisst die Methode chargingStationProperty
.
Da es sich um ein Label handelt, reicht ein unidirektionales Binding.
Das zeigt wie gesagt nur die Grundidee. Nächsten Dienstag gehen wir noch ein, zwei Schritte weiter.
Besten Dank für Ihr Feedback und Hinweise, werde das so einfliessen lassen. Besteht die Möglichkeit die Unterlagen zu den nächsten Lektionen bereits ins AD hochzuladen? Wäre super, weil die kommenden Wochen voll gepackt mit diversen anderen Projektabgaben und Prüfungen sind. So könnte man im Allgemeinen besser vorausarbeiten und die Arbeit besser verteilen.
Unterlagen sind jetzt auf dem AD
Grüezi Herr Holz
Das GUI habe ich mal umgesetzt, Daten aus dem CSV werden nun in der Table angezeigt. Jetzt möchte ich bei einem Klick-Event (
CsTableViewClickEvent
), die ausgewählte TableRow (ChargingStation
) imCsDetailHeaderPane
anzeigen.Dafür habe ich im
ChargingStationPresentationModel
ein entsprechendes Property erstellt, welches bei einem Klick-Event aktualisiert wird. Soweit funktioniert alles - doch wie muss ich die Bindings erstellen, damit imCsDetailHeaderPane
bspw. das Label für die Adresse aktualisiert wird?Ich habe in der setupBindings-Methode ein bidirectional-Binding vom Address-Label auf das
StringProperty
-Gegenstück von derChargingStationProperty
gesetzt. Jedoch scheint dies nicht zu funktionieren.Was mache ich falsch? Oder habe ich etwas missverstanden?
Ich wäre Ihnen sehr dankbar für ein rasches Feedback. Freundliche Grüsse
Remo von Arx