javafx - 在缩放后不正确的阶段中的父级定位

时间:2014-07-30 13:48:09

标签: java javafx

首先我做了什么...... 我在其控制器中缩放父对象... ParentController.java

@Override
public void initialize(URL url, ResourceBundle rb) {
...
       if(scale != 1.0){
            //double oldWD = mainPane.getLayoutBounds().getMinX();
            mainPane.setScaleY((scale));
            mainPane.setScaleX((scale));
            mainPane.setLayoutX(-1*(stageWidth - (stageWidth*scale))/2);
            mainPane.setLayoutY(-1*(stageHeight - (stageHeight * scale))/2);
        }
...
}

我应用程序主要做...

@Override
public void start(Stage stage) throws Exception {
...
           stage.setHeight(stageHeight * scale);
            stage.setWidth(stageWidth * scale);
...
}

stageHeight stageWidth 是从配置文件中读取的默认值(双精度值)。 widthout scale或scale 1.0 everthing工作正常,但在缩放后Root没有正确放置在场景中。

My Root是来自FXML的设置,如下所示:

<AnchorPane id="AnchorPane" fx:id="mainPane" centerShape="false" minHeight="-Infinity" minWidth="-Infinity" stylesheets="@css/main.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ParentController">

1 个答案:

答案 0 :(得分:0)

发现了这个问题,我必须使用Transform API,而不是

mainPane.setScaleY((scale));
mainPane.setScaleX((scale));
mainPane.setLayoutX(-1*(stageWidth - (stageWidth*scale))/2);
mainPane.setLayoutY(-1*(stageHeight - (stageHeight * scale))/2);

所以

scene.getRoot().getTransforms().add(new Scale(scale, scale, 0.0, 0.0));

完成了这项工作。