Używam właściwości JavaFx ObjectProperty w jednej z moich klas. Używam go do funkcji wiązania. Problem polega na tym, że chcę, aby ludzie mogli się z tym wiązać, ale żeby nie zmieniać wartości. Nie mogę wymyślić sposobu, żeby to zrobić w sposób kasty (gdzie ludzie nie będą mieli JAKICHKOLWIEK sposobu na zmianę go z zewnątrz), ale musi być jakiś sposób, aby to zrobić.Ustawienie tylko do odczytu z właściwością JavaFx
Odpowiedz
Rozwiązanie
Szukasz w ReadOnlyObjectWrapper.
Próbka
Oto Wykorzystanie przykład zaczerpnięty z sample tic tac toe game który napisałem:
class Square {
enum State { EMPTY, NOUGHT, CROSS }
private ReadOnlyObjectWrapper<State> state =
new ReadOnlyObjectWrapper<>(State.EMPTY);
public ReadOnlyObjectProperty<State> stateProperty() {
return state.getReadOnlyProperty();
}
public State getState() {
return state.get();
}
public void pressed() {
if (!game.isGameOver() && state.get() == State.EMPTY) {
state.set(game.getCurrentPlayer());
...
}
}
}
Objaśnienie
Pozwala to stan Placu być reprezentowane przez własność tak, aby zewnętrzni użytkownicy Kwadratu mogli związać się ze stanem Placu, ale sam stan jest zamknięty w Kwadracie, więc tylko Kwadrat może zmienić swój stan.
Przykład użycia tego wzorca jest obiektem SquareSkin, który zawiera widoczne węzły reprezentujące Kwadrat. Skóra może nasłuchiwać zmian właściwości stanu powiązanego kwadratu i aktualizować obraz, którego używa do odpowiedniego wyświetlania kwadratu.
Aby naprawdę upewnić się, że wartości Obiektów zawartych w ReadOnlyWrapper nie można zmienić zewnętrznie, najlepiej jest wprowadzić wartości Obiektów immutable (np. Obiekty nie mają funkcji ustawiających, a jedynie funkcje pobierające).
Dalsze przykłady
Kod gra I powiązany zawiera wiele innych przykładów różnych wzorów wiążących i zwyczajów (pisałem to częściowo jako ćwiczenie wiązania, aby zobaczyć, co się stanie, jeśli wiele wiązań stosowania w aplikacja).
- 1. JavaFX ReadOnlyListProperty nie tylko do odczytu?
- 2. Kanał "tylko do odczytu" tylko do odczytu
- 3. Właściwości tylko do odczytu
- 4. SQLite/PHP tylko do odczytu?
- 5. Resharper zmienia pola tylko do odczytu
- 6. TwoWay MultiBinding z tylko do odczytu właściwości
- 7. Używanie słabych z własnością tylko do odczytu?
- 8. Właściwość tylko do odczytu OData
- 9. Edycja widoku tylko do odczytu
- 10. Tabela jest „tylko do odczytu”
- 11. Komórki DataGridView tylko do odczytu
- 12. Zastępuje właściwość tylko do odczytu z kolumną tylko do odczytu, która ma tę samą wartość.
- 13. CoreOS: tylko do odczytu systemu
- 14. tylko do odczytu atrybutów przełącz
- 15. Lista ciągów tylko do odczytu
- 16. Tylko do odczytu obserwowalna kolekcja
- 17. Otwórz plik tylko do odczytu
- 18. Edytor MVC3 Tylko do odczytu
- 19. python - dlaczego właściwość do zapisu jest tylko do odczytu?
- 20. Zastępowanie abstrakcyjnej właściwości tylko do odczytu dla odczytu/zapisu Właściwość
- 21. Wiosenna @Transakcyjna propaganda tylko do odczytu
- 22. NHibernate Linq w trybie tylko do odczytu
- 23. Prawa dostępu tylko do odczytu CouchDB
- 24. Zastępowanie właściwość tylko do odczytu w podklasie
- 25. Koherentny widok tylko do odczytu bazy danych
- 26. Oprawa do odczytu tylko getter w AS3
- 27. HIbernate InvalidDataAccessApiUsageException - tryb tylko do odczytu
- 28. Utwórz p: kalendarz tylko do odczytu
- 29. Mongoose tylko do odczytu bez schematu
- 30. Dlaczego podział okna wymusza tylko do odczytu?
Ahhh ... To ma sens. Wyglądało na to, że musiał istnieć sposób na zrobienie tego. Dziękuję Ci. –