JavaFX初始化文本字段数组
我试图在JavaFX中创建文本字段数组,但出现了错误。 我有10个文本字段:路径1,路径2。。。路径10JavaFX初始化文本字段数组,java,arrays,javafx,initialization,Java,Arrays,Javafx,Initialization,我试图在JavaFX中创建文本字段数组,但出现了错误。 我有10个文本字段:路径1,路径2。。。路径10 //initialization @FXML private TextField path1,path2,path3,path4,path5,path6,path7,path8,path9,path10; @FXML private TextField[] paths = {path1,path2,path3,path4,path5,path6,path7,path8,path9,path1
//initialization
@FXML
private TextField path1,path2,path3,path4,path5,path6,path7,path8,path9,path10;
@FXML
private TextField[] paths = {path1,path2,path3,path4,path5,path6,path7,path8,path9,path10};
然而,当我写作的时候
String text = paths[0].getText();
paths[1].setText(name);
第一行是NullPointerException
我找到的解决方案是使用我的С控制器的Initizlizatior,但这太难看了:
public void initialize(URL fxmlFileColation, ResourceBundle resources) {
paths[0] = path1;
paths[1] = path2;
paths[2] = path3;
paths[3] = path4;
paths[4] = path5;
paths[5] = path6;
paths[6] = path7;
paths[7] = path8;
paths[8] = path9;
paths[9] = path10;
}
我怎样才能在许多生产线上摆脱手工辅助,并取得成功
@FXML
private TextField[] paths = {path1,path2,path3,path4,path5,path6,path7,path8,path9,path10};
工作 我认为你做不到。您需要单独声明变量,以便FXML可以初始化变量。然后,您需要通过将每个元素设置为某个值来使
TextField
数组工作。最好的方法是使用initialize(…)
函数中的解决方案,并将其用于它所要做的事情–初始化事情。您无法使这段代码正常工作。中的数组创建
private TextField[] paths = {path1,path2,path3,path4,path5,path6,path7,path8,path9,path10};
在初始值设定项中发生。fxml文件的加载过程如下所示:
initialize
(如果存在)文本字段的列表,并将其注入控制器()
当然,您也可以使用initialize
方法中的数组初始值设定项创建包含特定元素的TextField
数组:
public void initialize() {
paths = new TextField[] {path1,path2,path3,path4,path5,path6,path7,path8,path9,path10};
}
我使用的一个简单的解决方案
TextField[] txt = new TextField[beanFields.length];
for (int i=0; i<=beanFields.length-1; i++) {
TextField textField = new TextField();
txt[i] = textField;
textField.setPrefWidth(200);
textField.setPrefHeight(32);
}
TextField[]txt=新的TextField[beanFields.length];
对于(int i=0;我可能会重复感谢您提供的详细答案!但是我无法理解您答案的第一部分。只是使其在Void Initialise()中工作。你能建议阅读来理解这一点吗?@Vittor0:我在链接的答案中描述了这种方法。它只是将节点插入到场景图和列表中。请参阅“定义块”部分/fx:reference。如果您正在参考加载过程的描述,请阅读该页上的控制器部分;在创建对象期间初始化的字段,这发生在FXMLLoader
稍后通过注入字段使用控制器实例之前,此时路径
字段变为非-null
。这里的Beanfield是什么?