Reputation:
I have a listener addition like this:
lwebview.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener() {
public void changed(ObservableValue pobservable, Object poldstate, Object pnewstate) {
if (pnewstate.toString().equals("SUCCEEDED")) {
//code to be executed
}
}
});
Now my question is, is there any way with which this listener can be removed after execution? I am pretty new to these type of things.Thanks in advance for your help!
Upvotes: 0
Views: 116
Reputation: 8363
You should separately create the ChangeListener
and keep a reference of it.
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);
When you need to remove it later:
lwebview.getEngine().getLoadWorker().stateProperty().removeListener(listener);
If you just need the listener to stay until it becomes "succeeded", then you can:
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);
}
}
});
Upvotes: 2