gpt4 book ai didi

Java Mac OS X - 以编程方式计算屏幕高度,无需 Dock 高度

转载 作者:行者123 更新时间:2023-12-01 10:51:37 26 4
gpt4 key购买 nike

我需要这个来使应用程序以全高全宽打开(没有全屏),但尺寸应该在没有停靠栏的情况下准确(将 javafx.scene.Scene 的尺寸设置得太大会在标题中产生一些问题双击行为)。

我尝试使用此代码:

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
return new Dimension(screenSize.width, screenSize.height);

它可以工作,但它将 Dock 视为屏幕的一部分。有没有一种方法可以在没有 Dock 高度的情况下以编程方式计算屏幕高度,或者至少计算 Dock 的大小?

<小时/>

我也测试了这个解决方案,但奇怪的双击行为仍然持续存在:

import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class Main extends Application {
public static void main(String[] args) {
Application.launch(args);
}

@Override
public void start(final Stage primaryStage) {
primaryStage.setTitle("title");
Rectangle bounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
Group root = new Group();
Scene scene = new Scene(root, bounds.getWidth(), bounds.getHeight(), Color.WHITE);
primaryStage.setScene(scene);
primaryStage.show();
}
}

最佳答案

对于 AWT 和 Swing,您可以使用类 GraphicsEnvironment 获取适当的窗口大小。 。虽然一台机器可能有很多图形环境,但您可以通过调用静态方法getLocalGraphicsEnvironment来访问屏幕。

然后您可以使用getMaximumWindowBounds()。这为您提供了边界,包括顶部、左侧、底部和右侧,您应该将窗口限制在这些边界内。请注意,这不仅仅是宽度和高度的问题:Dock 可以位于左侧或右侧。它还考虑了菜单栏,而 Toolkit.getScreenSize 则没有。因此,请注意正确设置窗口的原点。

java.awt.Rectangle bounds = GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getMaximumWindowBounds();
<小时/>

对于 JavaFX,您可以使用 Screen类(class)。在这种情况下,您使用:

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

返回的Rectangle2D包含maxXmaxY,分别是整个屏幕的宽度和高度,以及width code> 和 height 这就是您所需要的 - 消除了停靠栏和菜单栏的值。

关于Java Mac OS X - 以编程方式计算屏幕高度,无需 Dock 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33844853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com