Добавить данные формы Java FX в ArrayList - PullRequest
1 голос
/ 28 января 2020

В школе у ​​меня была задача создать форму JavaFX GUI, в которой я могу написать несколько строк вроде name, eMail ...

Сначала я должен создать класс Person в котором расположены поля данных.

И должен быть класс AdressDB, в котором я создаю список о Person

В классе GUI я должен создать форму это может быть использовано для добавления "Персоны" в список. Например, с кнопкой.

"Создать класс AdressDB. Этот класс содержит список Person. Person содержит типичные поля данных, такие как: eMail, Name , .... В классе GUI вы реализуете форму, которую вы можете использовать, чтобы добавить в список "Персоны". "

Я уже заполнил форму. Теперь мой вопрос: как я могу добавить данные из формы в ArrayList?

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import javafx.stage.Window;
import java.util.ArrayList;
import javafx.scene.text.Text;
import javafx.scene.text.*;

public class GUI extends Application {
    private TextField fieldName, fieldActor;
    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Registration Form JavaFX Application");

        GridPane gridPane = createRegistrationFormPane();
        addUIControls(gridPane);
        Scene scene = new Scene(gridPane, 800, 500);
        primaryStage.setScene(scene);
        primaryStage.show();

    }

    private GridPane createRegistrationFormPane() {
        // Instantiate a new Grid Pane
        GridPane gridPane = new GridPane();

        // Position the pane at the center of the screen, both vertically and horizontally
        gridPane.setAlignment(Pos.CENTER);

        // Set a padding of 20px on each side
        gridPane.setPadding(new Insets(40, 40, 40, 40));

        // Set the horizontal gap between columns
        gridPane.setHgap(10);

        // Set the vertical gap between rows
        gridPane.setVgap(10);

        // Add Column Constraints

        // columnOneConstraints will be applied to all the nodes placed in column one.
        ColumnConstraints columnOneConstraints = new ColumnConstraints(100, 100, Double.MAX_VALUE);
        columnOneConstraints.setHalignment(HPos.RIGHT);

        // columnTwoConstraints will be applied to all the nodes placed in column two.
        ColumnConstraints columnTwoConstrains = new ColumnConstraints(200,200, Double.MAX_VALUE);
        columnTwoConstrains.setHgrow(Priority.ALWAYS);

        gridPane.getColumnConstraints().addAll(columnOneConstraints, columnTwoConstrains);

        return gridPane;
    }

    private void addUIControls(GridPane gridPane) {

        Label headerLabel = new Label("Bitte geben sie Ihre Daten ein");
        headerLabel.setFont(Font.font("Arial", FontWeight.BOLD, 24));
        gridPane.add(headerLabel, 0,0,2,1);
        GridPane.setHalignment(headerLabel, HPos.CENTER);
        GridPane.setMargin(headerLabel, new Insets(20, 0,20,0));

        // Add Name Label
        Label nameLabel = new Label("Name : ");
        gridPane.add(nameLabel, 0,1);

        // Add Name Text Field
        TextField name = new TextField();
        name.setPrefHeight(40);
        gridPane.add(name, 1,1);

        // Add Email Label
        Label emailLabel = new Label("E-Mail: ");
        gridPane.add(emailLabel, 0, 2);

        // Add Email Text Field
        TextField email = new TextField();
        email.setPrefHeight(40);
        gridPane.add(email, 1, 2);

        // Add Birthday Label
        Label Geburtsdatum = new Label("Geburtsdatum : ");
        gridPane.add(Geburtsdatum, 0, 3);

        // Add Birhday Field
        TextField geburtsdatum = new TextField();
        geburtsdatum.setPrefHeight(40);
        gridPane.add(geburtsdatum, 1, 3);
        geburtsdatum.setText("Geburtsdatum");


        // Add Submit Button
        Button submitButton = new Button("Submit");
        submitButton.setPrefHeight(40);
        submitButton.setDefaultButton(true);
        submitButton.setPrefWidth(100);
        gridPane.add(submitButton, 0, 4, 2, 1);
        GridPane.setHalignment(submitButton, HPos.CENTER);
        GridPane.setMargin(submitButton, new Insets(20, 0,20,0));





        submitButton.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {

        ;







                    if(name.getText().isEmpty()) {
                        showAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Form Error!", "Please enter your name");
                        return;
                    }
                    if(email.getText().isEmpty()) {
                        showAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Form Error!", "Please enter your email id");
                        return;
                    }
                    if(geburtsdatum.getText().isEmpty()) {
                        showAlert(Alert.AlertType.ERROR, gridPane.getScene().getWindow(), "Form Error!", "Please enter a password");
                        return;
                    }

                    showAlert(Alert.AlertType.CONFIRMATION, gridPane.getScene().getWindow(), "Wir haben ihre Daten erhalten!", "Vielen dank für ihr Vertrauen " + name.getText());





                }
            });

    }



        private void showAlert(Alert.AlertType alertType, Window owner, String title, String message) {
            Alert alert = new Alert(alertType);
            alert.setTitle(title);
            alert.setHeaderText(null);
            alert.setContentText(message);
            alert.initOwner(owner);
            alert.show();
        }





    public static void main(String[] args) {
        launch(args);
    }


}

1 Ответ

0 голосов
/ 29 января 2020

В методе handle submitButton.setOnAction вам нужно прочитать поля, чтобы создать нового персонажа. Это новый объект Person, который можно добавить в ArrayList.

Пока вы реализуете метод setOnAction для кнопок в том же методе, где вы определяете TextFields, это работает хорошо. Но как только вы переместите кнопки setOnAction в другой метод, вам нужно определить TextFields как класс «переменных» (Fields!) Для доступа к ним.

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