Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX屏幕分辨率缩放_Java_Javafx_Fxml_Screen Resolution - Fatal编程技术网

JavaFX屏幕分辨率缩放

JavaFX屏幕分辨率缩放,java,javafx,fxml,screen-resolution,Java,Javafx,Fxml,Screen Resolution,我一直在寻找一种方法来做到这一点,但我只找到了 我在一台1366x768笔记本电脑上开发,我使用JavaFX创建GUI(很抱歉,我无法发布代码,它基本上是一个包含两个网格的AnchorPane,其中包含更多的网格,其中包含标签、文本字段和两个图表) 当我以另一种分辨率(1920x1080或1600x900)加载项目时,问题就出现了 我正在使用stage.setMaximized(true),但这只会缩放背景和舞台本身,因此所有元素和容器(面板、标签、文本字段……)的大小与1366x768分辨率相

我一直在寻找一种方法来做到这一点,但我只找到了

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

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

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

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

有人对如何使元素与舞台分辨率成比例有什么建议吗

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

谢谢大家

更新:

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

<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>

您需要在子对象上设置锚定窗格约束。在您的案例中,gridpane

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个像素

如果没有看到一些代码,恐怕无法提供帮助。听起来像是布局问题,可能是硬编码的位置或尺寸。你读了关于链接问题的评论了吗?似乎是类似的问题。我没有硬编码。我用
JavaFX SceneBuilder 2
做了所有的事情,当查看大小时,所有东西(最小值、预值和最大值)都说
使用计算的大小。我明白不看代码很难帮上忙,但如果我把代码放到网上,我可能会被炒鱿鱼,我不想这样,对不起。谢谢您的帮助:)我明白了,但也许您可以编写一个与您的工作无关的小型、自包含的示例?只是一个简单的屏幕,有一个或两个组件来模拟这个问题?你的代码和fxml会很好地看到:)添加了Java和fxml代码的一个小例子,我刚刚做了。你甚至无法想象我现在有多爱你:)这对这个小例子非常有效。我猜我需要在实际项目中的每个面板中添加这些代码来解决这个问题所有元素都按比例缩放了吗?例如,如果我在GridPane中有一个按钮,我会将GridPane.leftAnchor=“0,0”…和其他按钮添加到button元素中。这样可以吗?锚窗格就像锚一样工作,当你们把孩子们放在那个里时,它的硬编码位置。若你们最大化窗口,比如在更高的分辨率上,那个么你们准备好了,在你们的场景向导里,它看起来很好,它不知道任何其他的东西,只是那个硬编码的位置,我很少使用AnchorPane,问题是你用它来做osmething,它并不是专门设计的,只是使用Borderpane,我自己,我沉迷于Borderpane,HBoxe,VBoxe。选择缩放控件的容器。是的,如果要使用anchorpanes,则必须设置此属性以确保控件缩放,在scenebuilder中单击要缩放的Anchorpane的子对象,并在布局选项中具有良好的UI锚窗格约束。如果需要,将0设置为所有边或其他值
 GridPane prefHeight="300.0" prefWidth="400.0" **HERE**