Как сделать базовую функцию графического интерфейса, которая использует любую панель - PullRequest
1 голос
/ 29 июня 2019

Я работал с JavaFX и мне было интересно, смогу ли я создать базовую функцию графического интерфейса, которая принимает любую панель в качестве параметра, т. Е. Не просто 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();
}

В конце концов, у меня должна быть одна функция, которая принимает корневой параметр, который может обрабатывать панели любого типа, и другой узел узлов.Спасибо за любую помощь.

1 Ответ

0 голосов
/ 29 июня 2019

В конце концов мне это удалось, но спасибо всем, кто помог

/**
 * 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();
}

Для дальнейшего использования это базовая функция графического интерфейса, которая принимает узлы в качестве параметра и панели и выводит их на экран.

Обновление:

Изменен метод, теперь он работает для любой панели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...