【问题标题】:is the Change Listener added only once or many timeChange Listener 是否只添加了一次或多次
【发布时间】:2019-06-05 09:56:46
【问题描述】:

我正在尝试在 javafx8 中创建一个媒体播放器,为此我创建了一个按钮并将其设置为 onAction 以向舞台全屏属性添加一个更改侦听器,如果不是,则使舞台全屏并退出全屏如果已经。

public void setFullScreen(ActionEven event) {
    Stage stage = ((Stage) containerBorderPane.getScene().getWindow());
    stage.fullScreenProperty().addListener((observable, oldValue, newValue) -> 
            setUpMenuBar(stage.isFullScreen())
    );
    stage.setFullScreen(!stage.isFullScreen());
}

每次单击按钮时都会调用此方法,那么这个“更改侦听器”是多次添加到 fullScreenProperty 还是一次?

【问题讨论】:

    标签: javafx javafx-8 changelistener


    【解决方案1】:

    每次调用setFullScreen 时,您都会创建一个新 ChangeListener 并将其注册到属性中。所以你不是每次都添加“这个”ChangeListener,而是每次都添加一个不同的ChangeListener。

    即使您每次确实将ChangeListener 传递给addListener,它仍然会被多次添加。来自ObservableValue.addListener(ChangeListener) 的文档(强调我的):

    添加一个 ChangeListener,只要 ObservableValue 的值发生变化,就会通知它。 如果多次添加同一个监听器,则会多次通知。也就是说,不进行检查以确保唯一性。

    【讨论】:

      猜你喜欢
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 2015-06-03
      • 1970-01-01
      • 2018-06-07
      相关资源
      最近更新 更多