如何根据多个字段的值生成消息?

How to Generate Message According to Values in Multiple Fields?

我正在使用 JavaFX 构建应用程序。我想要做的是根据用户输入值生成一条消息。所以每行有一个文本字段和一个组合框和一个复选框,并且有很多行如下所示。

假设我将根据用户值生成三种不同的消息。所以我需要检查这些字段是否为空,并检查每个字段的值以生成特定消息。像上面那样只检查三行的字段就可以了。但是我有 10 个字段。所以我必须检查每一个并生成或附加我自己的消息。而且,如果用户选中了复选框,则需要对所有选中的行值进行分组。那么我要问的是有没有什么好方法(最佳实践)来实现我的需要或者一个简单的方法呢?我试过 HashMapArrayList。但是那些对此不起作用。

如果有人能帮助我,我将不胜感激。提前致谢。

我可能会推荐您自己创建的自定义节点,如下所示。此示例不应具有与您的应用程序相同的功能,而只是为了展示如何创建和使用自定义节点。在创建此示例时,我牢记了您的想法,它具有您的文本字段组合框和复选框,并且它们更易于管理。给它一个运行,如果您有任何问题,请告诉我

public class Main extends Application {

    @Override
    public void start(Stage stage) {
        VBox vBox = new VBox();
        vBox.setAlignment(Pos.CENTER);

        ArrayList<String> itemList = new ArrayList<>(Arrays.asList("Dog", "Cat", "Turkey"));

        ArrayList<HBoxRow> hBoxRowArrayList = new ArrayList<>();
        for (int i = 0; i<3; i++) {
            HBoxRow hBoxRow = new HBoxRow();
            hBoxRow.setComboBoxValues(FXCollections.observableList(itemList));
            hBoxRowArrayList.add(hBoxRow);
            vBox.getChildren().add(hBoxRow.gethBox());
        }

        Button printTextfieldsButton = new Button("Print Textfields");
        printTextfieldsButton.setOnAction(event -> {
            for (HBoxRow hBoxRow : hBoxRowArrayList) {
                System.out.println("hBoxRow.getTextFieldInput() = " + hBoxRow.getTextFieldInput());
            }
        });
        vBox.getChildren().add(printTextfieldsButton);

        stage.setScene(new Scene(vBox));
        stage.show();
    }

    //Below is the custom Node
    public class HBoxRow {
        HBox hBox = new HBox();
        ComboBox<String> comboBox = new ComboBox<>();
        TextField textField = new TextField();
        CheckBox checkBox = new CheckBox();

        public HBoxRow(){
            hBox.setAlignment(Pos.CENTER);

            textField.setPrefWidth(150);

            comboBox.setPrefWidth(150);

            checkBox.setOnAction(event -> {
                textField.setDisable(!textField.isDisabled());
                comboBox.setDisable(!comboBox.isDisabled());
            });

            hBox.getChildren().addAll(checkBox, textField, comboBox);
        }

        public void setComboBoxValues(ObservableList observableList) {
            comboBox.setItems(observableList);
        }

        public HBox gethBox(){
            return hBox;
        }

        public String getTextFieldInput(){
            return textField.getText();
        }
    }
}