【问题标题】:JavaFX/Controlsfx - How to monitor item change in a PropertySheet?JavaFX/Controlsfx - 如何监控 PropertySheet 中的项目更改?
【发布时间】:2017-08-10 11:45:30
【问题描述】:

有没有一种方便的方法来监控属性表项的状态?像 textfield 获得焦点、布尔状态变化等。

我查看了javadoc,没有找到。

而且这里有一个issue,不过解决方法好像是让编辑知道某个属性的变化。

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

有人可以帮忙吗?

【问题讨论】:

    标签: java javafx controlsfx 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;
        };
    }
    

    【讨论】:

    • 谢谢。我已经测试了示例代码,但不适合我。我不明白 PropertyItemBase,它不可能是 PropertySheet.Item,对吧?因为它的方法中没有 setEditor() 方法。那么,它是什么? @bonfatti
    • 我的意思是在粘贴我的评论之前删除代码的 itemBase 部分,对此感到抱歉。 PropertyItemBase 是 PropertySheet.Item 的一个实现,它包含一个编辑器的实例,以及 getter 和 setter。我将编辑我的答案以删除 itemBase。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    相关资源
    最近更新 更多