我正在编写一个 JavaFX 应用程序,我需要使用其 addRow
方法将 n 个TextField
对象添加到GridPane
中的行中。 addRow
接受任意数量的参数,但它接收的TextField
对象的数量不是硬编码的。例如
GridPane gp = new GridPane();
ArrayList<TextField> tf = new ArrayList<>();
for (int i = 0; i < user_entered_number; i++) {
tf.add(new TextField());
}
gp.addRow(row_index, /* all elements in tf*/);
我希望使用 allRow
方法将所有生成的TextField
对象包含在row_index
GridPane
行中。
如果这甚至可能,我该怎么做?
GridPane.addRow(...)
方法采用int
(行索引(和 Node
s 的变量。你可以为 varargs 参数传递一个数组,所以你可以这样做
gp.addRow(row_index, tf.toArray(new Node[0]));
或者,首先创建一个数组而不是列表:
GridPane gp = new GridPane();
TextField[] tf = new TextField[userEnteredNumber];
for (int i = 0; i < userEnteredNumber; i++) {
tf[i] = new TextField();
}
gp.addRow(row_index, tf);
我不确定我是否正确理解您的问题。是否要将 tf ArrayList 中的所有元素添加为 addRow(( 方法中的参数?
addRow(( mathod 将 varargs 作为参数。您是否尝试将 ArrayList 转换为数组,然后将其传递给该方法?
TextField[] arr = new TextField[tf.size()];
arr = tf.toArray(arr);