我希望javafx.stage.Stage
在macOS上處於全屏模式,並且沒有(本地)菜單欄可見。另外我希望當應用程序處於全屏模式時,底座不可用。macOS上的JavaFX Real Fullscreen
我有一個Stage
和我設置stage.setFullScreen(true)
。如果我的舞臺風格設置爲stage.initStyle(StageStyle.UNDECORATED)
,則應用程序將顯示本機菜單欄和底座。因此整個屏幕不適用於應用程序。
如果我的樣式設置爲stage.initStyle(StageStyle.UTILITY)
菜單欄是不可見的,而是有一個灰色地帶。
如果我移動,其中通常的菜單欄放置光標,菜單欄將另外將其自身顯示具有小合閘按鈕和一個小酒吧。
另外,如果我光標鼠標下該平臺被放置在碼頭將顯示本身。
我該如何實現一個真正的全屏應用程序,沒有菜單欄,也沒有顯示停靠欄,頂部沒有灰條,所以我的應用程序可以使用所有的屏幕尺寸?
代碼
import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Screen;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class Fullscreen extends Application {
@Override public void start(Stage stage) throws Exception {
AnchorPane pane = new AnchorPane();
Scene scene = new Scene(pane);
pane.setStyle("-fx-background-color: blue");
stage.initStyle(StageStyle.UTILITY);
stage.setFullScreen(true);
stage.setScene(scene);
stage.show();
//stage.setHeight(stage.getHeight() + 16);
//stage.setY(-16);
}
}
註釋
如果我設置stage.setHeight(stage.getHeight() + 16)
和stage.setY(-16)
stage.show()
之後和樣式設置爲stage.initStyle(StageStyle.UTILITY)
,灰色欄不再可見。但這對我來說似乎不是一個好的解決方案,因爲它取決於屏幕尺寸(在我的情況下是2560x1440),我不知道如何精確獲取灰色條的大小。菜單欄和碼頭也可用。
使用StageStyle.Decorated作品也適用於我。我的錯誤是使用未修飾的風格,因爲我認爲我的全屏應用程序,我不需要裝飾。但是真的沒有辦法擺脫菜單欄和碼頭嗎?如果你看電腦遊戲,也沒有菜單欄和碼頭。但主要用C或C++編寫。有沒有Java的解決方法嗎? – Yakuhzi
@Tazmo是的,使用默認('DECORATED')就好像MWE演示的那樣。不幸的是,我不知道有任何解決方案可以刪除原生菜單欄以獲得類似電子遊戲的體驗。 – beatngu13