我是JavaFX的新手。我正在尝试创建一个简单的居中菜单,该菜单包含下面带有按钮的文本。

我创建了两个元素Text titleButton 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();
}


java - JavaFX-如何将多个元素添加到StackPane?-LMLPHP

最佳答案

我想在这里参考官方文档: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/

10-10 02:17