听众删除

时间:2018-01-11 05:59:04

标签: java javafx listener

我有一个像这样的听众:

npm start

现在我的问题是,有没有办法在执行后删除此侦听器?我对这些类型的东西都很陌生。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

您应该单独创建ChangeListener并保留对它的引用。

ChangeListener<Worker.State> listener = new ChangeListener<Worker.State>() {
        public void changed(ObservableValue<? extends Worker.State> pobservable, Worker.State poldstate, Worker.State pnewstate) {
            if (pnewstate = Worker.State.SUCCEEDED) {
                //code to be executed
            }
        }
    };

lwebview.getEngine().getLoadWorker().stateProperty().addListener(listener);

以后需要删除时:

lwebview.getEngine().getLoadWorker().stateProperty().removeListener(listener);

如果你只是需要听众留下来,直到它成为&#34;成功&#34;,那么你可以:

lwebview.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
        public void changed(ObservableValue<? extends Worker.State> pobservable, Worker.State poldstate, Worker.State pnewstate) {
            if (pnewstate = Worker.State.SUCCEEDED) {
                //code to be executed
                lwebview.getEngine().getLoadWorker().stateProperty().removeListener(this);
            }
        }
    });