我一直在使用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。感谢您的帮助。
答案 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功能,它将节点作为参数并包含一个窗格并输出到屏幕,以供将来参考。
已更改方法,因此它现在可用于任何窗格