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

标签 java javafx javafx-8 fxml

我正在开发一个应用程序,在用户决定文本字段的数量之后,我应该从我在 javaFX Controller 中动态创建的文本字段中检索数据。因为在第一个 View 中我只有一个文本字段,所以我确实很容易地检索它,没有任何问题,但我只是不知道当从 Controller 动态创建文本字段时如何执行此操作。

我尝试使用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);
    }

在同一个 Controller 的 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 文件中。

最佳答案

类似于:

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

关于java - 从 javafx 中的多文本字段检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26978566/

相关文章:

java - 什么是 VS F10 和 F11 的 eclipse 调试预期类似物?

java - 如何在不必调用 System.exit() 的情况下终止 JavaFX 平台线程?

java - 如何使用对象创建 JavaFX 树

java - 测试加载消息

java - try catch 阶乘递归函数的异常

java - 无法在 Android O 中构建 NotificationCompat.Builder

java - 在它自己的方法中传递对象的实例作为参数?

maven - JavaFX 8 Maven 项目的 native 打包,如何

由于单独的线程,Javafx 无法附加上下文菜单

java - 设置阿拉伯数字系统区域设置不显示阿拉伯数字