我是JavaFX的新手。我正在尝试创建一个简单的居中菜单,该菜单包含下面带有按钮的文本。
我创建了两个元素Text title
和Button testButton
。然后我创建了StackPane stackPane
。然后,我试图将两个元素添加到stackPanes
子级中并将其添加到new Scene
。但是,仅显示最后一个元素。
如何将多个元素添加到StackPane?
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Test Title");
Text title = new Text("hey!");
StackPane.setAlignment(title, Pos.TOP_CENTER);
Button testButton = new Button("Testing");
StackPane.setAlignment(testButton, Pos.TOP_CENTER);
StackPane stackPane = new StackPane();
stackPane.setPrefSize(300, 300);
stackPane.setPadding(new Insets(25, 0, 0, 0));
stackPane.getChildren().add(title);
stackPane.getChildren().add(testButton);
Scene scene = new Scene(stackPane);
primaryStage.setScene(scene);
primaryStage.show();
}
最佳答案
我想在这里参考官方文档:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/StackPane.html,尤其是:
StackPane将其子级放在从后到前的堆栈中。
子级的z顺序由子级列表的顺序定义,第0个子级是底部,最后一个子级在顶部。如果已设置边框和/或填充,则将在这些插图内布置孩子。
现在,回答您的问题:您可以像以前那样进行操作,但是您可能想要一个偏移量,因为两个子项都位于同一位置,因此以后添加的子项将覆盖所有先前的子项。
您可以通过更改例如Text title = new Text("Adding a very, very, very, very, very, very long text here... now that vile button should not overlap me anymore!");
或以其他方式设置对齐方式。
如果您不想通过手动定位来打扰最佳布局,则最好使用另一个Pane
为您完成此操作,例如这里的直接已知子类之一:https://docs.oracle.com/javafx/2/api/javafx/scene/layout/Pane.html
关于java - JavaFX-如何将多个元素添加到StackPane?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42682154/