:
/**
* 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;
};
}
ありがとうございました。私はサンプルコードをテストしましたが、私のために働いていません。私はPropertyItemBaseを理解していない、それはPropertySheet.Item、右ではありませんか?そのメソッドにはsetEditor()メソッドがないためです。だから、それは何ですか? @bonfatti – user6839234
私のコメントを貼り付ける前に、コードのitemBase部分を削除するつもりでしたが、残念です。 PropertyItemBaseは、エディタのインスタンスとgetterおよびsetterを含むPropertySheet.Itemの実装です。私は答えを編集してitemBaseを削除します。 – bonfatti
ありがとうございました! – user6839234