你能在 NetBeans 中创建一个 JTextFields 数组吗?

Can you make an array of JTextFields in NetBeans?

我制作了 3x3 幻方棋盘格。我只是想知道如何将我的 9 个 JTextFields 存储在一个数组中?
这样我可以遍历二维数组和 JTextFields 以快速分配值,因为我存储值的方式效率很低...

    int[][] grid = new int[3][3];
    grid[0][0] = new Integer(one.getText());
    grid[0][1] = new Integer(two.getText());
    grid[0][2] = new Integer(three.getText());
    grid[1][0] = new Integer(four.getText());
    grid[1][1] = new Integer(five.getText());
    grid[1][2] = new Integer(six.getText());
    grid[2][0] = new Integer(seven.getText());
    grid[2][1] = new Integer(eight.getText());
    grid[2][2] = new Integer(nine.getText());

您是要将 JTextFields 存储在数组中还是将 Integer 值存储在数组中?这将像您在示例代码中那样存储 Integer,但您可以轻松地将第 7 行的分配更改为新的 JTextField。

private static final int ROWS_NUM = 3;
private static final int COLS_NUM = 3;
int[][] grid = new grid[ROWS_NUM][COLS_NUM];
int counter = 0;
for(int i=0; i<ROWS_NUM; i++) {
    for(int j=0; j<COLS_NUM; j++) {
        grid[i][j] = new Integer(++counter);
    }
}

最简单的方法是,如果您想在循环中执行此操作,您应该在列表、数组或 java 支持的任何列表对象中创建 JTextField 对象。因为您想按特定顺序获取值并在循环中执行此操作。

JTextField[] fields = new JTextField[9];
//set the index of text field
int fieldIndex = 0;
int[][] grid = new int[3][3];
for(int i = 0; i<3; i++){
    for(int j = 0; j<3; j++){
        //JTextField value will be string, if you want to get integer from string you should do this. Otherwise you can generate string matrix to keep values as a string.
        grid[i][j] = Integer.getInteger(fields[fieldIndex].getText());
        fieldIndex++;
    }
}