JavaFX/Controlsfx - Как отслеживать изменения элементов в PropertySheet?

Есть ли удобный способ контролировать состояние элемента таблицы? Как текстовое поле сфокусироваться, логическое изменение статуса и т. Д.

Я посмотрел Javadoc, не нашел.

И здесь есть проблема, но решение, кажется, позволяет редактору узнать об изменении свойства.

То, что я хочу, это как раз наоборот, следить за редактором.

Кто-нибудь может помочь?

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;
    };
}
Другие вопросы по тегам