我需要这个让应用程序以完整的高度打开(没有全屏),但是大小应该是精确的没有底座(设置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();
}
}
答案 0 :(得分:1)
对于AWT和Swing,您可以使用类GraphicsEnvironment
获取窗口的相应大小。虽然计算机可能有许多图形环境,但您可以通过调用静态方法getMaximumWindowBounds()
来访问屏幕。
然后你可以使用Toolkit.getScreenSize
。这为您提供了限制窗口的边界,包括顶部,左侧,底部和右侧。请注意,这不仅仅是宽度和高度的问题:Dock可以位于左侧或右侧。它还需要考虑菜单栏,java.awt.Rectangle bounds = GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getMaximumWindowBounds();
没有。因此,请注意正确设置窗口的原点。
javafx.geometry.Rectangle2D bounds = Screen.getPrimary().getVisualBounds();
对于JavaFX,您可以使用Screen
类。在这种情况下,您使用:
Rectangle2D
返回的maxX
包含maxY
和width
,它们是整个屏幕的宽度和高度,height
和rabbit:listener-container
就是你的需要 - 消除了停靠栏和菜单栏的值。