Я использую ObjectProperty JavaFx в одном из моих классов. Я использую его для функций привязки. Проблемы состоят в том, что я хочу, чтобы люди могли привязываться к нему, но не изменять значение. Я не могу думать о кастовом доказательстве этого способа (где у людей не будет ЛЮБОГО способа изменить его извне), но должен быть какой-то способ сделать это.Настройка только для чтения с использованием свойства JavaFx
ответ
Решение
Вы ищете ReadOnlyObjectWrapper.
Образец
Вот пример использования берется из sample tic tac toe game, который я написал:
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());
...
}
}
}
Объяснение
Это позволяет состояние площади быть представлена свойство, чтобы внешние пользователи Квадрата могли привязываться к состоянию Квадрата, но само государство инкапсулировано на Квадрат, так что только Квадрат может изменить свое состояние.
Примером использования этого шаблона является объект SquareSkin, который содержит видимые узлы для представления Квадрата. Кожа может прослушивать изменения свойства состояния связанного квадрата и обновлять изображение, которое оно использует, для отображения квадрата соответствующим образом.
Чтобы убедиться, что значения объекта, заключенные в ReadOnlyWrapper, не могут быть изменены извне, лучше всего сделать эти значения объектов immutable (например, объекты не имеют функций сеттера, а только функции getter).
Дальнейшие примеры
В игре код, который я связан содержит много других примеров различных обязательных моделей и обычаев (я написал его частично в качестве обязательного упражнения, чтобы увидеть, что произойдет, если вы используете много привязок в приложение).
- 1. Настройка свойства WindowHeight (только для чтения)
- 2. Настройка свойства только для чтения по методу
- 3. Свойства только для чтения
- 4. Настройка свойства в ViewModel с использованием свойства зависимостей только для чтения в представлении
- 5. Как реализовать производные свойства/значения только для чтения в JavaFX?
- 6. Настройка свойства с использованием только имени строки
- 7. Yii2 Неверный вызов: настройка свойства только для чтения
- 8. yii2 Настройка свойства только для чтения: yii \ data \ Pagination :: limit
- 9. Назначение только для чтения свойства
- 10. ScriptControlDescriptor.AddProperty & Только для чтения Свойства
- 11. Объект только для чтения свойства
- 12. Angular2 - свойства только для чтения
- 13. Только для чтения Пользовательские свойства
- 14. Настройка свойства только для чтения в текстовое поле на значение true с использованием JavaScript
- 15. с использованием ReflectionClass для чтения класса Свойства
- 16. JavaFX как показать текст только для чтения?
- 17. Невозможно назначить только для чтения свойства '__esModule'
- 18. Использовать стиль только для чтения в JavaFX?
- 19. breezejs: нескалярные навигационные свойства только для чтения
- 20. AutoFixture.AutoMoq: заданное значение только для чтения свойства
- 21. только для чтения свойства протоколов Swift
- 22. свойства только для чтения в PHP?
- 23. Serialize производного свойства только для чтения
- 24. Если структура C# имеет только свойства только для чтения
- 25. Настройка htaccess только для чтения index.php
- 26. Настройка только для чтения файлов PDF
- 27. vb.net Настройка tabcontrol только для чтения
- 28. Свойства только для чтения в веб-службах
- 29. Сделать свойства отображенной объекта только для чтения
- 30. Заглушка только для чтения свойства в BaseClass
Ahhh ... Это имеет смысл. Казалось, должен быть способ сделать это. Спасибо. –