首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaFX屏幕分辨率缩放

JavaFX屏幕分辨率缩放
EN

Stack Overflow用户
提问于 2016-04-07 07:53:18
回答 1查看 18.6K关注 0票数 13

我一直在寻找这样做的方法,但我只找到了This question without answers

我正在开发一台1366x768笔记本电脑,我使用JavaFX创建了一个图形用户界面(对不起,我不能发布代码,它基本上是一个包含两个GridPanes的AnchorPane,其中包含更多的GridPanes,其中包含标签、TextFields和一对图表)。

当我在另一个解决方案(1920x1080或1600x900)上加载项目时,就会出现问题。

我正在使用stage.setMaximized(true);,但这只是缩放背景,舞台本身,所以所有的元素和容器(面板,标签,TextFields……)保持与1366x768分辨率相同的大小,使GUI“不适合”于不完全是1366x768的分辨率。

我希望我能很好地解释我的问题,我的英语还远不完美。

有没有人有任何建议,如何使元素的规模与舞台分辨率?

(我需要在每台显示器上将软件最大化或全屏化,这样做固定的分辨率(例如1366x768)似乎不是一个好的解决方案)。

谢谢你们所有人。

更新:

我只是创造了一个小例子。它是默认的JavaFX AnchorPane中的2x1 AnchorPane,我在网格窗格中添加了两个示例按钮。

代码语言:javascript
运行
复制
<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 (不是真正的全屏,只有stage.setMaximized(true);)时,GridPane并不是缩放,而是舞台本身,所以我有一个全屏背景,在屏幕的左上角有一个400x300Pane(带有很小的按钮)。

TL;DR:示例代码按钮停留在屏幕的左上角,当我放大分辨率时,剩下的只是一个空空间。

更新2;忘记了Java。

代码语言:javascript
运行
复制
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();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-07 09:53:45

您需要对子节点设置锚窗格约束。在您的例子中,网格窗格

代码语言:javascript
运行
复制
AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"

这会是你的

代码语言:javascript
运行
复制
 GridPane prefHeight="300.0" prefWidth="400.0" **HERE** 

这将使容器中的子组件最大化,从而使两侧的像素都达到0 0 0像素。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36469958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档