JavaFX 屏幕分辨率缩放
我一直在寻找一种方法来做到这一点,但我只找到了这个问题,没有答案。
我正在开发一台1366x768笔记本电脑,我使用JavaFX创建一个GUI(我很抱歉,但我不能发布代码,它基本上是一个包含几个GridPanes的AnchorPane,其中包含更多的GridPanes,其中包含标签,TextFields和几个图表)。
当我以另一种分辨率(1920x1080或1600x900)加载项目时,问题就来了。
我正在使用,但这只缩放背景,舞台本身,因此所有元素和容器(面板,标签,TextFields.....)保持与1366x768分辨率相同的大小,使得GUI在不完全是1366x768的分辨率下“不合适”。stage.setMaximized(true);
我希望我解释得足够好,我的英语远非完美。
有没有人对如何使元素与舞台分辨率缩放有任何建议?
(我需要在每个显示器中最大化或全屏显示软件,因此制作固定分辨率(例如1366x768)似乎不是一个好的解决方案)。
谢谢大家。
更新:
我只是创建了一个小例子。它是默认JavaFX AnchorPane中的2x1 GridPane,我在网格窗格中添加了两个示例按钮。
<AnchorPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" >
<children>
<GridPane prefHeight="300.0" prefWidth="400.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Button fx:id="example1" mnemonicParsing="false" text="Example 2" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
<Button fx:id="example2" mnemonicParsing="false" text="Example 2" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="CENTER" />
</children>
</GridPane>
</children>
这段代码在400x300的屏幕中看起来不错(太少了,我知道,这只是一个例子),当我将其缩放到1366x768(不是真正的全屏,只是),GridPane不会缩放,只有舞台本身,所以我有一个全屏背景,在屏幕的左上角有一个400x300窗格(带有它的小按钮)。stage.setMaximized(true);
TL;DR:示例代码中按钮保留在屏幕的左上角,当我放大分辨率时,其余的只是一个空白区域。
更新2;忘记了 Java 代码。
Parent root = FXMLLoader.load(getClass().getResource("UI.fxml"));
Scene scene = new Scene(root, java.awt.Toolkit.getDefaultToolkit().getScreenSize().width,
java.awt.Toolkit.getDefaultToolkit().getScreenSize().height);
stage = new Stage();
stage.setMaximized(false);
stage.setScene(scene);
stage.setTitle("Example Menu");
stage.show();