JavaFX / Controlsfx - 如何监控PropertySheet中的项目更改?

时间:2017-03-19 03:25:00

标签: java javafx controlsfx propertysheet

是否有一种方便的方法来监控propertyysheet项目状态?就像文本字段一样,聚焦,布尔状态改变等。

我看了javadoc,没找到。

这里有一个issue,但解决方案似乎让编辑知道了属性的变化。

我想要的只是相反,监控编辑。

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:1)

来自PropertySheet:

/**
 * 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;
    };
}