首先我做了什么...... 我在其控制器中缩放父对象... 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">
答案 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));
完成了这项工作。