我有一个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();
}
答案 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中的所有东西,这是我怀疑发生的事情。