JavaFx 8 ScrollPane removeListener

时间:2015-09-16 03:38:50

标签: javafx-8

使用JavaFx 8我需要能够删除一个监听器并恢复它,以防止代码在不应该被触发时被触发。以下是添加监听器的代码。我已经尝试了许多不同的方法来删除监听器,但似乎都没有成功。以下代码与我要删除(或禁用/启用)的监听器有关:

    import javafx.scene.control.ScrollPane;

    private ScrollPane c_fX_ScrollPane;

     c_fX_ScrollPane.vvalueProperty().addListener(
            (ObservableValue<? extends Number> observable,
                    Number oldValue, Number newValue) -> {

                fn_HandleScrollPaneVerticalValue(oldValue.doubleValue(),
                        newValue.doubleValue());
            });

TIA

1 个答案:

答案 0 :(得分:0)

如果你想删除它,不需要引用它吗?因此,您需要在addListener()方法调用之外实例化ChangeListener,并在removeListener()调用上使用相同的引用。

ChangeListener listener = new ChangeListener(){
    @Override public void changed(ObservableValue o,Object oldVal, 
             Object newVal){
                fn_HandleScrollPaneVerticalValue(oldValue.doubleValue(),
                        newValue.doubleValue());
            });

c_fX_ScrollPane.vvalueProperty().addListener(listener);
c_fX_ScrollPane.vvalueProperty().removeListener(listener);