为什么有时我们使用getChildren()add()而有时却直接使用add()es:https://docs.oracle.com/javafx/2/get_started/form.htm
Example 4–4 Button
Button btn = new Button("Sign in");
HBox hbBtn = new HBox(10);
hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
hbBtn.getChildren().add(btn);
grid.add(hbBtn, 1,`enter code here`
grid.add(userTextField, 1, 1);
Label pw = new Label("Password:");
grid.add(pw, 0, 2);
PasswordField pwBox = new PasswordField();
grid.add(pwBox, 1, 2);)
示例4–3控件
Text scenetitle = new Text("Welcome");
scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
grid.add(scenetitle, 0, 0, 2, 1);
Label userName = new Label("User Name:");
grid.add(userName, 0, 1);
TextField userTextField = new TextField();
答案 0 :(得分:1)
仅Afaik GridPane
直接提供了add
方法。存在此方法的目的是缩短将子项添加到并分配行/列索引(和列/行跨度)所需的代码。您需要为GridPane
的几乎所有子项分配行/列索引,这就是为什么这些方法有用的原因。
gridPane.add(child1, column1, row1);
gridPane.add(child2, column2, row2, columnSpan, rowSpan);
比
短得多GridPane.setColumnIndex(child1, column1);
GridPane.setRowIndex(child1, row1);
gridPane.getChildren().add(child1);
GridPane.setColumnIndex(child2, column2);
GridPane.setRowIndex(child2, row2);
GridPane.setColumnSpan(child2, columnSpan);
GridPane.setRowSpan(child2, rowSpan);
gridPane.getChildren().add(child2);
诸如VBox
之类的其他布局不提供这种方法,因为子级是基于子级列表中的顺序进行定位的,而分配可选布局参数(如margin
的频率则较低。< / p>