JavaFX/Controlsfx - 如何监视属性表中的项更改



有没有一种方便的方法来监视属性表项的状态?像文本字段获得焦点,布尔状态更改等。

我看过javadoc,没有找到。

这里有一个问题,但解决方案似乎让编辑器知道属性的更改。

我想要的恰恰相反,监视编辑器。

有人可以帮忙吗?

来自 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 );
}

如果创建对属性编辑器的回调,则可以将侦听器添加到编辑器。

例如:

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

最新更新