2017-03-19 14 views
1

プロパティシートのステータスを監視する便利な方法はありますか?テキストフィールドのようにフォーカスを当て、状態の変化をブールします。JavaFX/Controlsfx - PropertySheetのアイテムの変更を監視する方法は?

私はjavadocを見たことがありません。

ここにはissueがありますが、解決策はエディタにプロパティの変更を知らせるようです。

私が欲しいのは、ちょうど反対にあり、エディタを監視しています。

誰でも手助けできますか? PropertySheetから

答えて

1

/** 
* Sets a new editor factory used by the PropertySheet to determine which 
* {@link PropertyEditor} to use for a given {@link Item}. 
* @param factory 
*/ 
public final void setPropertyEditorFactory(Callback<Item, PropertyEditor<?>> factory) { 
    propertyEditorFactory.set(factory == null? new DefaultPropertyEditorFactory(): factory); 
} 

あなたがエディタにリスナーを追加することができますPropertyEditorはへのコールバックを作成した場合。例えば

SimpleObjectProperty<Callback<PropertySheet.Item, PropertyEditor<?>>> propertyEditorFactory = new SimpleObjectProperty<>(this, "propertyEditor", new DefaultPropertyEditorFactory()); 
    projectSheet.setPropertyEditorFactory(getItemPropertyEditorCallback(propertyEditorFactory)); 



private Callback<PropertySheet.Item, PropertyEditor<?>> getItemPropertyEditorCallback(SimpleObjectProperty<Callback<PropertySheet.Item, PropertyEditor<?>>> propertyEditorFactory) { 
    return param -> { 
     PropertyEditor<?> editor = propertyEditorFactory.get().call(param); 

     //Add listeners to editor 
     editor.getEditor().focusedProperty().addListener((observable, oldValue, newValue) -> System.out.println(newValue)); 

     return editor; 
    }; 
} 
+0

ありがとうございました。私はサンプルコードをテストしましたが、私のために働いていません。私はPropertyItemBaseを理解していない、それはPropertySheet.Item、右ではありませんか?そのメソッドにはsetEditor()メソッドがないためです。だから、それは何ですか? @bonfatti – user6839234

+0

私のコメントを貼り付ける前に、コードのitemBase部分を削除するつもりでしたが、残念です。 PropertyItemBaseは、エディタのインスタンスとgetterおよびsetterを含むPropertySheet.Itemの実装です。私は答えを編集してitemBaseを削除します。 – bonfatti

+0

ありがとうございました! – user6839234

関連する問題