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