eventsjavafx

javafx - how to disable events fired not from the user


i have a little problem with javafx. i added a change listener like this:

private final ChangeListener<String> pageItemSelected = new ChangeListener<String>()
{
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue){
    pageGotSelected(newValue);
}
};

now to the problem: if i change an page item like this:

 guiPageList.setValue(model.getCurrentTargetPage());

the event gets also(as it get by selecting something with the mouse or key) fired. is there a way to disable the event firing or another way? i need the event only, if the element got selected by the user and not if i change it with the setValue() function... perhaps consuming the event, but i don´t know what kind of event this would be.

thanks in advance!!!


Solution

  • You can temporarily remove the listener and add it again:

    guiPageList.getSelectionModel().selectedItemProperty().removeListener(pageItemSelected);
    guiPageList.setValue(model.getCurrentTargetPage());
    guiPageList.getSelectionModel().selectedItemProperty().addListener(pageItemSelected);