JavaFX 屏幕分辨率缩放

2024-01-10

我一直在寻找一种方法来做到这一点,但我只找到了这个问题没有答案 https://stackoverflow.com/questions/32453173/javafx-scale-elements-to-screen-resolution.

我正在一台 1366x768 笔记本电脑上进行开发,我使用 JavaFX 创建一个 GUI(很抱歉,但我无法发布代码,它基本上是一个包含几个 GridPanes 的 AnchorPane,其中包含更多 GridPanes,其中包含标签、文本字段和一个情侣图表)。

当我以其他分辨率(1920x1080 或 1600x900)加载项目时,问题就出现了。

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

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

有人对如何使元素随舞台分辨率缩放有任何建议吗?

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

谢谢你们。

Update:

我刚刚创建了一个小例子。它是默认 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>

当我将其缩放到 1366x768(不是真正的全屏,只是stage.setMaximized(true);),GridPane 不缩放,仅缩放舞台本身,因此我有一个全屏背景,屏幕左上角有一个 400x300 窗格(及其小按钮)。

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();

您需要为子项设置锚定窗格约束。在你的情况下网格面板

AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"

这将在你之后

 GridPane prefHeight="300.0" prefWidth="400.0" **HERE** 

这将最大化容器内的子组件,因此每侧都有 0 0 0 0 像素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX 屏幕分辨率缩放 的相关文章

随机推荐

  • 查询LDAP

    我以前没有使用过 LDAP 所以我有点迷失 我需要连接到 LDAP 源查找特定属性并更改它 该程序的输入是一个包含用户列表的 CSV 文件 该程序应该从 CSV 文件中读取 UID 找到 LDAP 中的记录并替换某个属性 我不知道如何做到这
  • Clang AST 解释

    我正在尝试解释 Clang AST 的部分内容 如下图所示 简而言之 我想做的是检查两个变量在不同的程序点是否相同 检查 AST 后 我注意到 AST 部分之间唯一的共同点是蓝色圆圈部分 谁能帮我看看这些十六进制数字在 AST 中对应什么
  • 迭代 git diff --name-only 结果时如何处理文件名中的空格

    我正在编写的脚本需要从 git diff 中遍历每个文件 但是 我不知道如何处理文件名中的空格 任何有空格的文件都会被分成 2 个文件 我知道他们需要被包裹起来 但我不知道在它进入之前如何实现这一点 param 当文件名中有空格时 我应该如
  • Python 3 有 LDAP 模块吗?

    我正在将一些 Java 代码移植到 Python 我们想使用 Python 3 但我在 Windows 中找不到适用于 Python 3 的 LDAP 模块 这迫使我们使用 2 6 版本 这很麻烦 因为其余代码已经是 3 0 格式 您可以使
  • Android - 如何创建意图来打开显示“帐户和同步设置”屏幕的活动

    我在导航到 帐户和同步设置 屏幕时看到了以下日志消息 但我对如何创建一个意图来导航到那里感到困惑 INFO ActivityManager 53 Starting activity Intent cmp com android provid
  • bootstrap container-fluid - 以正确的方式删除边距(溢出)

    如何从引导程序中删除所有边距container fluid类及其行 container fluid padding 0 这基本上满足了我的要求 但它为正文增加了 20px 溢出 那么我应该这样做 body html overflow x h
  • Delphi - 同步线程与框架

    下午好 我有一个框架 这个框架是我通过主窗体动态创建的 主要形式 Interface TInterface Create self with handlingInterface do begin Parent Form1 Left 0 To
  • 推荐的程序结构

    作为初学者 我已经制定了一些想法 但想向社区询问实施以下程序的最佳方法 它可以解码 8 种不同类型的数据文件 它们各不相同 但大多数相似 包含许多相似的字段 另外 有3代系统可以生成这些文件 每个都略有不同 但生成相同类型的文件 我需要制作
  • Typescript方法重载不同类型的参数但相同的响应

    我需要使用 TypeScript 重载一个方法 FooModel有 6 个参数 但 2 个字符串参数是唯一的强制参数 所以不是创建一个FooModel每次我想使用myMethod 我想超载myMethod并创建FooModel一旦进入那里
  • Rails 3 验证 IPv4 和 IPv6 格式

    我知道 IPv4 和 IPv6 的验证格式 但不确定如何将它们组合起来 所以至少一种格式应该是正确的 这是我的验证 validates src ip addr presence gt true uniqueness gt true form
  • 调用 php 中定义为对象变量的匿名函数[重复]

    这个问题在这里已经有答案了 我有如下 php 代码 class Foo public anonFunction public function construct this gt anonFunction function echo cal
  • Nodejs Scraper 不会移至下一页

    大家好 这是我其他问题的后续问题 我创建了一个 Nodejs Scraper 它似乎不想浏览页面 它停留在第一个页面 我的源代码如下 const rp require request promise const request requir
  • 如何验证 Blob 是否存在于已删除列表中

    以下代码将能够查看 blob 是否存在 var blob client GetContainerReference containerName GetBlockBlobReference blobFileName if blob Exist
  • 创建可变参数模板函数来测量和执行其他函数

    我目前正在尝试实现一个函数 该函数将任何其他函数和该函数的一组有 效输入值作为输入 并返回该函数的结果以及打印执行该函数所需的时间 这是我到目前为止所拥有的 template
  • Python 自定义日期时间(?) 格式处理

    假设我有一个代表时间和一周中的天数的字符串 例如 52300 表示一周的第 5 天 星期五 23 小时 00 分钟 我如何将其解析为时间或日期时间对象以添加 timedelta hours 3 并将其恢复为这种奇怪的格式 预期输出为 602
  • C语言使用Unix概念的目录监控代码

    在服务器上 进程监视 Unix 文件系统中的文件 如果客户端发送要监视的文件名 则服务器必须向客户端发送该文件是否被更改或删除的报告 对于服务器 客户端通信 我们应该使用消息队列或套接字 对于文件中的每个更改 服务器都必须通知该更改 对于所
  • 在 MacOS 上将 OpenSSL 更新到 1.1.1

    新的 LTS1 1 1 https www openssl org blog blog 2018 09 11 release111 的版本OpenSSL https github com openssl openssl is out 我如何
  • mongodb db.collection.find({}) 不执行任何超过 .limit(101) 的操作

    node mongodb 版本 2 0 43 和 MongoDB shell 版本 3 2 5 Centos虚拟机 我有一个 无上限 1600 个文档的集合 不是很大 并且所有文档都有标准的 BSON ids if I do db coll
  • sonar.analysis.mode 参数的替代方案

    我正在使用 Sonarqube 7 9 和 Gitlab 以及 Maven docker 映像 该映像使用以下命令调用我的 Sonarqubemvn batch mode verify sonar sonar DskipTests true
  • JavaFX 屏幕分辨率缩放

    我一直在寻找一种方法来做到这一点 但我只找到了这个问题没有答案 https stackoverflow com questions 32453173 javafx scale elements to screen resolution 我正