Schreibgeschützt mit einer JavaFx-Eigenschaft festlegen

8

Ich verwende eine JavaFx ObjectProperty in einer meiner Klassen. Ich benutze es für die Bind-Funktionen. Das Problem ist, dass ich möchte, dass die Leute sich daran binden können, aber nicht, um den Wert zu ändern. Ich kann mir keinen kastentauglichen Weg vorstellen, dies zu tun (wo die Leute keine Möglichkeit haben werden, es von draußen zu ändern), aber es muss einen Weg geben, es zu tun.

    
sinθ 06.08.2013, 00:54
quelle

1 Antwort

8

Lösung

Sie suchen den ReadOnlyObjectWrapper .

Beispiel

Hier ist ein Beispiel für die Verwendung von einem Probe Tic Tac Toe-Spiel genommen , die ich schrieb:

%Vor%

Erklärung

Damit kann der Zustand des Platzes ein durch eine Eigenschaft dargestellt werden, so dass externe Benutzer des Platzes an den Staat Platz binden können, aber der Staat selbst so auf dem Platz verkapselt ist nur der Platz kann seinen eigenen Zustand ändern.

Ein Beispiel für eine Verwendung für dieses Muster ist ein SquareSkin Objekt, das den sichtbaren Knoten enthält den Platz zu repräsentieren. Die Skin kann auf Änderungen an der Statuseigenschaft des zugeordneten Quadrats warten und das Bild, das zur Anzeige des Quadrats verwendet wird, entsprechend aktualisieren.

Um sicherzustellen, dass die in ReadOnlyWrapper enthaltenen Object-Werte nicht von außen geändert werden können, empfiehlt es sich, diese Object-Werte auf unveränderlich (zB die Objekte haben keine set-Funktionen, nur Funktionen Getter).

Weitere Beispiele

Der Spielcode, den ich verlinkt habe, enthält viele andere Beispiele für verschiedene Bindungsmuster und Gebräuche (ich habe es teilweise als verbindliche Übung geschrieben, um zu sehen, was passieren würde, wenn Sie viele Bindungen in einer App verwenden würden).

    
jewelsea 06.08.2013, 01:58
quelle

Tags und Links