JavaFX坐标相对于Swing在Y轴上反转

时间:2016-07-16 20:03:44

标签: java javafx javafx-8 scenebuilder

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产生以下输出: Java export with inverted Y coordinates

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

如有必要,可以找到完整的代码here

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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