未修饰的窗帘覆盖整个屏幕

时间:2018-10-25 16:59:51

标签: java javafx

我想创建一个带有自定义标题栏(带有用于最小化,全屏模式和关闭的按钮的标题栏)的应用程序,它当然是特定于OS的。但是我目前只想要Windows。

我进行了研究,发现无法更改默认的操作系统标题栏,但可以通过setUndecorated(true)删除它。所以我做到了,发现它隐藏了任务栏并覆盖了整个屏幕。我知道我可以设置固定大小,但是我意识到所有Windows PC的屏幕大小都不相同。我希望它像setExtendedState(JFrame.MAXIMIZED_BOTH)一样工作,当我未修饰为真时,这样做不起作用...

是否有什么办法可以使其保持未修饰状态,不隐藏任务栏并同时全屏显示?对不起,我的英语,我的不好:-)

2 个答案:

答案 0 :(得分:1)

您可以使用GraphicsEnvironment类获取带有/不带有任务栏的屏幕尺寸:

GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle bounds = env.getMaximumWindowBounds();
System.out.println("Screen Bounds: " + bounds );

GraphicsDevice screen = env.getDefaultScreenDevice();
GraphicsConfiguration config = screen.getDefaultConfiguration();
System.out.println("Screen Size  : " + config.getBounds());

答案 1 :(得分:1)

如果您使用的是JavaFX,则可以使用the Screen class来获取主屏幕的视觉边界,并手动移动/调整舞台大小:

stage.initStyle(StageStyle.UNDECORATED);

Rectangle2D bounds = Screen.getPrimary().getVisualBounds();

stage.setX(bounds.getMinX());
stage.setY(bounds.getMinY());
stage.setWidth(bounds.getWidth());
stage.setHeight(bounds.getHeight());

stage.show();