JavaFX锚点约束

时间:2014-06-02 15:29:44

标签: java javafx-8 fxml scenebuilder

我有一个FXML文件,里面有一个分割窗格和2个矩形。我有两个矩形通过FXML正确锚定,但从代码我生成新的矩形,但我似乎无法得到它们的约束工作,我将它们设置为与FXML中的矩形相同的设置(约束明智) )但没有。我认为问题是FXML中的矩形在Split Pane中,而从Java代码生成的那些矩形在Main AnchorPane中。这是代码的任何想法吗?

public void start(Stage stage) throws Exception {
    //GridPane root = new GridPane();
    AnchorPane root = fxmlLoader.load(getClass().getClassLoader().getResource("fxml/TestConveyorView.fxml")).getRoot();
    Box box = new Box(1);
    Rectangle rect = new Rectangle(50,50, box.getStatus().getColor());
    rect.setX(385.0);
    AnchorPane.setLeftAnchor(rect, 385.0);
    AnchorPane.setRightAnchor(rect, 294.0);
    root.getChildren().addAll(rect);
    Scene scene = new Scene(root);

    // BackgroundImage background = new BackgroundImage(null, BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, BackgroundPosition.DEFAULT, BackgroundSize.DEFAULT);
    stage.setScene(scene);
    stage.show();
}

1 个答案:

答案 0 :(得分:0)

通过删除主类中的所有额外代码(如下所示)来修复。

public void start(Stage stage) throws Exception {
    AnchorPane root = fxmlLoader.load(getClass().getClassLoader().getResource("fxml/TestConveyorView.fxml")).getRoot();
    Scene scene = new Scene(root);

    // BackgroundImage background = new BackgroundImage(null, BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, BackgroundPosition.DEFAULT, BackgroundSize.DEFAULT);
    stage.setScene(scene);
    stage.show();
}

将这些内容添加到我的控制器

@FXML
AnchorPane Splitright;
Splitright.getChildren().add(rectangle);

事实证明,这些形状只是被抛到了实际上没有被放置在正确的AnchorPane中的所有东西,这是我怀疑发生的事情。