首页 文章

从javafx中的多文本字段中检索数据

提问于
浏览
0

我正在开发一个应用程序,我应该从用户决定文本字段数量后在javaFX控制器中动态创建的文本字段中检索数据 . 因为在第一个视图中我只有一个文本字段,我确实很容易检索它没有问题,但我不知道如何从控制器动态创建文本字段时如何做到这一点 .

我试图使用textfield.getText();但它不起作用 .

这是我的代码:

public void handleButtonActionNext(ActionEvent event) throws IOException{

        String t = textField.getText();
        IntegerStringConverter a = new IntegerStringConverter();
        this.i = a.fromString(t);

        Node node = (Node) event.getSource();
        Stage stage = (Stage) node.getScene().getWindow();
        Scene scene = stage.getScene();
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("ProcessusTimeExec.fxml"));
        Parent root = (Parent) fxmlLoader.load();
        scene.setRoot(root); 

        gridPane = (GridPane) FXMLLoader.load(getClass().getResource("ProcessusTimeExec.fxml"));
        Scene secondScene = new Scene(gridPane);
        gridPane.setPadding(new Insets(10, 10, 10, 10));

        this.listTextField = new ArrayList<>();

        for(int n=1; n<=i;n++){
                this.label = new Label("execution Time "+n);

                GridPane.setConstraints(label, 0, n+2);
                GridPane.setConstraints(textField, 1, n+2);
                gridPane.getChildren().add(textField);
                gridPane.getChildren().add(label);
            }

            stage.setScene(secondScene);
    }

在这个Handlevent中,在同一个控制器中,我正在尝试检索数据,以便将其发送到我项目的逻辑部分 .

public void handleButtonActionAlgo(ActionEvent event) throws IOException{

        Node node = (Node) event.getSource();
        Stage stage = (Stage) node.getScene().getWindow();
        Scene scene = stage.getScene();
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Algo.fxml"));

        Parent root = (Parent) fxmlLoader.load();
        scene.setRoot(root);

        // retrieve the data from the textFields      
    }

采取这些操作的按钮位于FXML文件中 .

1 回答

  • 1

    就像是 :

    TextField textField[] = new TextField[...]; 
    
          for(int n=1; n<=i;n++) {
                textField[n] = new TextField("input "+n);
                gridPane.getChildren().add(textField[n]);
            }
    

    您可以使用 .getText() 打印它们进行测试

    for(int n=1; n<=i;n++) {System.out.println(textField[n].getText());}
    

相关问题