如何制作使用任何窗格的基本GUI功能

时间:2019-06-29 14:44:32

标签: java javafx

我一直在使用JavaFX,想知道我是否可以制作一个基本的GUI函数,该函数将任何窗格作为参数,而不仅仅是VBox。

我可以具有在边框窗格,HBox或磁贴窗格中使用的多个功能,但我不希望多个功能只是一个。我什至尝试将窗格投射到节点上,但没有用。

我在这里使用它

private void menu()
{
    VBox root = new VBox();
    Label title = new Label("Quiz");
    title.setStyle("-fx-font-size: 18px; -fx-font-weight: bold;");
    Button btnQuiz = new Button("Quiz");
    btnQuiz.setOnAction(event -> quiz());
    btnQuiz.setMaxWidth(75);
    Button btnCreate = new Button("Create");
    btnCreate.setOnAction(event -> create());
    btnCreate.setMaxWidth(75);
    Button btnQuit = new Button("Quit");
    btnQuit.setOnAction(event -> System.exit(0));
    btnQuit.setMaxWidth(75);
    baseGUI(root, title, btnQuiz, btnCreate, btnQuit);
}

这是baseGUI代码

private void baseGUI(VBox root, Node... nodes)
{
    for (Node node : nodes)
    {
        root.getChildren().add(node);
    }
    root.setPadding(new Insets(10));
    root.setAlignment(Pos.CENTER);
    root.setSpacing(10.00);
    Scene scene = new Scene(root, 250, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}

最后,我应该有一个函数,该函数带有一个可以处理任何类型窗格的根参数,另一个函数是Node。感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

我最终做到了这一点,但感谢所有提供帮助的人

/**
 * baseGUI function
 * Creates a baseGUI function
 * @param root
 * @param nodes
 */
private void baseGUI(Pane root, Node... nodes)
{
    if (root instanceof VBox)
    {
        ((VBox) root).setAlignment(Pos.CENTER);
        ((VBox) root).setSpacing(10);
        ((VBox)root).getChildren().add(nodes);
    }
    root.setPadding(new Insets(10));
    Scene scene = new Scene(root, 250, 250);
    primaryStage.setScene(scene);
    primaryStage.show();
}

这是一个基本的GUI功能,它将节点作为参数并包含一个窗格并输出到屏幕,以供将来参考。

更新:

已更改方法,因此它现在可用于任何窗格