使用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
答案 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);