Java 尝试遍历文本字段

Java 尝试遍历文本字段,java,javafx,fxml,Java,Javafx,Fxml,我试图用forloop获取每个文本字段的文本。 我尝试的是: 创建包含每个TextField的TextField数组。 然后,当有人按下一个按钮后,它会进入一个for循环,该循环应该得到每个文本字段的值,但这不起作用,它会给我一个错误(我在文章末尾发布了这个错误)。 当我只选择一个文本字段时,它确实起作用。比如inputName.getText();然后它确实返回TextField的值,但当我使用textFields[I].getText()这样的数组尝试时;这给了我一个错误。 这是一个Java

我试图用forloop获取每个文本字段的文本。 我尝试的是: 创建包含每个TextField的TextField数组。 然后,当有人按下一个按钮后,它会进入一个for循环,该循环应该得到每个文本字段的值,但这不起作用,它会给我一个错误(我在文章末尾发布了这个错误)。 当我只选择一个文本字段时,它确实起作用。比如inputName.getText();然后它确实返回TextField的值,但当我使用textFields[I].getText()这样的数组尝试时;这给了我一个错误。 这是一个JavaFXML应用程序 这是FXMLDocumentController.java文件

package justTesting;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;

public class FXMLDocumentController implements Initializable {

    @FXML
    private TextField 
            inputName, inputAddress, inputCity, inputPostalcode, inputCountry, inputNumber, inputMail,
            inputLabel, inputFlight, inputDestination, 
            inputType, inputBrand, inputColor, inputSpecial;

    @FXML
    private TextField[] textFields =  {
            inputName, inputAddress, inputCity, inputPostalcode, inputCountry, inputNumber, inputMail,
            inputLabel, inputFlight, inputDestination, 
            inputType, inputBrand, inputColor, inputSpecial};

    @FXML
    private String[] dataTypes = {"Name: ", "Address: ", "City: ", "Postalcode: ", "Country: ", "Phone Number: ", "E-Mail: ",
                                  "Label Tag: ", "Flight number: ", "Destination: ", 
                                  "Type: ", "Brand: ", "Color: ", "Special characteristics: "};

    @FXML
    private Label label;

    @FXML
private void getInputButton(ActionEvent event) {

    System.out.println("Dit is alleen ter verduidelijking voor de designers");
    for (int i = 0; i < textFields.length; i++) {
        System.out.println(textFields[i].getText());
//the following line causes the error ( textFields[i].getText() )
                System.out.printf("%-20s%10s\n", dataTypes[i], textFields[i].getText());
    }
}

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

}

初始化
Initialize()
方法中的文本字段数组。在初始化数组时(在类初始值设定项中),文本字段不能由
fxmloader
注入,并且仍然为空。因此,数组中充满了空引用

假设您尚未发布的代码中没有错误,以下操作应该可以正常工作:

public class FXMLDocumentController implements Initializable {

    @FXML
    private TextField 
            inputName, inputAddress, inputCity, inputPostalcode, inputCountry, inputNumber, inputMail,
            inputLabel, inputFlight, inputDestination, 
            inputType, inputBrand, inputColor, inputSpecial;

    private TextField[] textFields ;

    // ...

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        textFields = new TextField[] {
            inputName, inputAddress, inputCity, inputPostalcode, inputCountry, inputNumber, inputMail,
            inputLabel, inputFlight, inputDestination, 
            inputType, inputBrand, inputColor, inputSpecial} ;

    }

}

我否决了这个问题,因为“这不起作用”不是一个有用的问题陈述。请你的问题准确地解释你的问题是什么。“但这不起作用”是一个问题描述。也许可以提供更多的信息——“返回空值”;“它返回以前输入的值”;“它没有触发动作处理程序”-所有这一切都表明您已经尝试至少调试代码了,“它在
System.out.println(textFields[i].getText());
行抛出一个空指针异常将很好。。。如果您的代码抛出异常,请始终在问题中包含堆栈跟踪,并确定代码中负责的行!我尝试了这个,但是它给了我一个语法错误。在textfields={它说表达式的开头是非法的,在下面的几行上它说:not a statement';“expected not a statement';“expected not a statement”;“expectedSee update to response.这很有效,非常感谢您的帮助James_D!
public class FXMLDocumentController implements Initializable {

    @FXML
    private TextField 
            inputName, inputAddress, inputCity, inputPostalcode, inputCountry, inputNumber, inputMail,
            inputLabel, inputFlight, inputDestination, 
            inputType, inputBrand, inputColor, inputSpecial;

    private TextField[] textFields ;

    // ...

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        textFields = new TextField[] {
            inputName, inputAddress, inputCity, inputPostalcode, inputCountry, inputNumber, inputMail,
            inputLabel, inputFlight, inputDestination, 
            inputType, inputBrand, inputColor, inputSpecial} ;

    }

}