私は自分のクラスでJavaFx ObjectPropertyを使用しています。私はバインド機能のためにそれを使用しています。問題は、人々がそれに縛られることができるようにしたいが、価値を変えることではないということです。私は、これを行うための賢明な証明方法(人々が外部からそれを変更する方法を持っていない)を考えることはできませんが、それを行うには何らかの方法が必要です。JavaFxプロパティで読み取り専用を設定する
8
A
答えて
8
ソリューション
あなたはReadOnlyObjectWrapperを探しています。
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());
...
}
}
}
説明
このスクエアの状態によって表現できる:ここ
サンプル
は、私が書いたsample tic tac toe gameから採取した使用例でありますSquareの外部ユーザーがSquareの状態にバインドできるようにするプロパティですが、状態自体はSquareにカプセル化されているため、正方形は自分の状態を変えることができます。
このパターンの使用例はSquareを表す可視ノードを含むSquareSkinオブジェクトです。スキンは、関連する四角の状態プロパティの変更をリッスンし、四角形を適切に表示するために使用するイメージを更新できます。
ReadOnlyWrapperで囲まれたObject値を外部的に変更できないようにするには、オブジェクト値immutableを作成することをお勧めします(たとえば、オブジェクトにはセッター関数がなく、ゲッター関数のみがあります)。
さらに例
私はリンクされたゲームのコードは、異なる結合パターンと使用の他の多くの例が含まれていますが(私はあなたにバインディングの多くを使用する場合に何が起こるか見に結合練習として、部分的にそれを書きましたアプリ)。
関連する問題
- 1. Moqで読み取り専用プロパティを設定するには?
- 2. ファイルの読み取り専用プロパティを設定する
- 3. 読み取り専用自動対(読み取り専用)プロパティ
- 4. 読み取り専用プロパティ
- 5. 読み取り専用プロパティ
- 6. 読み取り専用プロパティを設定できません
- 7. 読み取り専用のプロパティによるスウィフトプロトコル設定可能なプロパティ
- 8. CheckComboBox(ControlsFX)が読み取り専用に設定されている[JavaFX]
- 9. typescriptクラスの読み取り専用プロパティ
- 10. BLToolkit:パブリックの読み取り専用プロパティ
- 11. 読み取り専用のプロパティ
- 12. 読み取り専用でフラッシュドライブを設定するには?
- 13. SVN-Apache用の読み取り専用ユーザーを設定する
- 14. JavaScriptでの読み取り専用プロパティの定義
- 15. 同じ値を持つ読み取り専用列で読み取り専用プロパティをオーバーライドします。
- 16. excel vba:テーブルセルを読み取り専用に設定する
- 17. Googleスプレッドシートドキュメントを読み取り専用に設定する
- 18. PDFファイルの読み取り専用を設定する
- 19. addContentItemPropertiesPaneでプロパティを読み取り専用にする
- 20. 派生クラスでプロパティを読み取り専用にする
- 21. Mockで読み取り専用プロパティをモックする方法は?
- 22. 読み取り専用の.plistファイルを設定します。
- 23. 読み取り専用(プログラムで入力)の設定方法
- 24. CurrentCulture.DateTimeFormat.LongTimePattern読み取り専用
- 25. 読み取り専用テキストボックス
- 26. 読み取り専用
- 27. 読み取り専用アソシエーション
- 28. 読み取り専用TFS
- 29. は読み取り専用
- 30. スクロールバー付きの読み取り専用TextArea [JavaFx]
ああ...それは完全に意味があります。これを行う方法がなければならないようだった。ありがとうございました。 –