【问题标题】:JavaFX coordinates inverted on the Y-axis with respect to SwingJavaFX 坐标在 Y 轴上相对于 Swing 倒置
【发布时间】:2016-07-18 06:56:35
【问题描述】:

Previously,我问了一个比较 SceneBuilder 坐标和 JavaFX 输出的问题。我开始意识到问题不在于 SceneBuilder 和导出的 FXML 代码;但事实上,这是我机器的 JavaFX 版本的问题。但是,我仍然不清楚为什么会发生这种情况。

在我的 FXML 代码中,我有以下层次结构:

<AnchorPane id="rootPane" pickOnBounds="false" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
   <StackPane id="game">
      <AnchorPane id="hud" style="-fx-background-color: rgba(0, 0, 0, 0);">
         <Text id="ammo" fontSmoothingType="LCD" layoutX="14.0" layoutY="699.0" strokeType="OUTSIDE" strokeWidth="0.0" text="0" wrappingWidth="111.21875">
            <font>
               <Font name="Brother Deluxe 1350 Font" size="48.0" />
            </font>
            <effect>
               <DropShadow color="#0000007a" height="16.0" offsetY="1.0" radius="5.5" width="8.0" />
            </effect>
         </Text>
      </AnchorPane>
   </StackPane>
</AnchorPane>

这会从 IntelliJ 产生以下输出:

如您所见,Y 坐标被翻转,0,0 位于屏幕左下方。但在 SceneBuilder 中,输出是我通常期望的:

如有需要,可查看完整代码here

我的问题是,为什么我的 JavaFX 应用程序会生成一个 0,0 位于左下角而不是左上角的界面,正如我的研究表明的那样?如果可能的话,我该如何解决这个问题?

我的操作系统是 OS X 10.12,El Capitan。我的JDK版本是1.8.0_66。

【问题讨论】:

  • 为什么不使用 FXML 的根 (rootPane) 作为根元素,而是将 game 包装在一个新的 Group 中?这可能有问题(但不确定)。
  • @sillyfly 这是因为我需要一个Group 来实例化Scene
  • 您可以使用任何Parent 来实例化Scene,而不仅仅是Group。如果你必须使用Group,为什么不把它放在FXML中?
  • @sillyfly 等一下,我会看看当我从等式中删除 Group 时会发生什么。
  • SceneAntialiasing.BALANCEDMac 上提交了一个错误,它翻转了场景。使用更新的 JDK 版本,因为它应该被修复,或者删除抗锯齿。

标签: java javafx javafx-8 scenebuilder


【解决方案1】:

在 Mac 上有一个 bugSceneAntialiasing.BALANCED 翻转了场景。它是基于question 提交的,它已经针对 Java 9 进行了修复,并已移植到 JDK 8 的最新版本。

如果可能,解决方案只是更新到latest JDK 版本。

如果没有,删除抗锯齿参数或使用SceneAntialiasing.DISABLED 也可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多