JavaFX:在非鼠标/键盘处理程序中设置全屏独占模式(FSEM)
我的应用程序由一个名为JavaFX:在非鼠标/键盘处理程序中设置全屏独占模式(FSEM),javafx,fullscreen,Javafx,Fullscreen,我的应用程序由一个名为TabPane的TabPane组成,有两个Tabs:firstTab和secondTab。无论何时选择firstTab,我都希望应用程序处于FSEM(全屏独占模式,请参阅);否则,它应该处于正常窗口模式 我通常被告知哪个选项卡处于活动状态的方式是 BooleanBinding isFirstTabActive = tabPane.getSelectionModel(). selectedItemProperty().isEqualTo(firstTab); 或 由
TabPane
的TabPane
组成,有两个Tab
s:firstTab
和secondTab
。无论何时选择firstTab
,我都希望应用程序处于FSEM
(全屏独占模式
,请参阅);否则,它应该处于正常窗口模式
我通常被告知哪个选项卡处于活动状态的方式是
BooleanBinding isFirstTabActive = tabPane.getSelectionModel().
selectedItemProperty().isEqualTo(firstTab);
或
由于stage.fullScreenProperty()
是只读的,因此无法绑定(如文档中所述),因此我不能使用我的第一种方法并执行
stage.fullScreenProperty().bind(isFirstTabActive) //not working.
由于我目前不打算在应用程序上签名,并且如文档所述:
应用程序只能输入FSEM以响应用户输入。更具体地说,允许从鼠标(Node.mousePressed/mousererelease/mouseClicked)或键盘(Node.keyPressed/keyreased/keyTyped)事件处理程序输入
我也不能使用第二种方法,即
tabPane.getSelectionModel.selectedItemProperty().addListener(new ChangeListener<Tab>() {
@Override
public void changed(ObservableValue<? extends Tab> observable, Tab oldValue, Tab newValue) {
stage.setFullScreen(newValue == firstTab);
}
);
那么,这真的是去这里的路吗?或者我可以用绑定
s进行一些变通吗?有什么建议吗?谢谢
tabPane.getSelectionModel.selectedItemProperty().addListener(new ChangeListener<Tab>() {
@Override
public void changed(ObservableValue<? extends Tab> observable, Tab oldValue, Tab newValue) {
stage.setFullScreen(newValue == firstTab);
}
);
tabPane.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
stage.setFullScreen(tabPane.getSelectionModel().getSelectedItem() == firstTab);
}
});