2015-09-16 76 views
0

使用JavaFx 8我需要能夠刪除偵聽器並將其恢復,以防止代碼在不應該被觸發時觸發。以下是添加Listener的代碼。我嘗試了很多不同的方式來刪除Listener,但都沒有成功。下面的代碼涉及我想刪除(或禁用/啓用)監聽器:JavaFx 8 ScrollPane removeListener

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

回答

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); 
+0

我無法獲得該工作或其他類似的替代方案。我最終做的是創建一個類作爲監聽器。在該類中有一個布爾標誌,可以關閉或打開以啓用或禁用它。這看起來工作令人滿意。 – logos1