我试图在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还是仅添加一次?
答案 0 :(得分:0)
每次调用setFullScreen
时,您都会创建一个 new ChangeListener
并将其注册到属性中。因此,您并不是每次都添加“ this” ChangeListener
,而是每次都添加不同 ChangeListener
。
即使您每次都将 same ChangeListener
传递给addListener
,它仍然会被多次添加。从ObservableValue.addListener(ChangeListener)
(强调我的)的文档中:
添加一个ChangeListener,每当ObservableValue的值更改时,就会收到通知。 如果多次添加同一个侦听器,则将多次收到通知。也就是说,不会进行检查以确保唯一性。