按顺序获取所有JTextField

hai*_*ind 1 java arrays swing gettext jtextfield

我使用Netbeans创建具有许多JTextField元素的GUI .我想迭代遍历所有这些来调用setText,文本将只有1,2,3 ......

private javax.swing.JTextField txt1;
private javax.swing.JTextField txt2;
private javax.swing.JTextField txt3;
private javax.swing.JTextField txt4;
private javax.swing.JTextField txt5;
private javax.swing.JTextField txt6;
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种在循环中执行此操作的方法,而不是setText手动调用它们中的每一个.

可能是这样的:

public void getInfoJText2(){
    Component[] children = jPanel1.getComponents();
    for (int i = 0, j = 1; i < children.length; i++) {
        if (children[i] instanceof JTextField) {
            ((JTextField) children[i]).setText(Integer.toString(j++));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么处理这个?

Kay*_*man 6

使用JTextFields的数组(或List),然后迭代它.如果您不想摆脱拖放GUI(这是一种创建GUI的糟糕方式,因为您必须完全依赖GUI构建器),您仍然可以将文本字段放在阵列.

初始化文本字段时,创建一个可在getInfoJText2()方法中访问的数组,然后将引用放入数组中的文本字段,即

JTextField[] fields = new JTextField[6];  // Instance variable in the class

public void initArray() {
    fields[0] = txt1;
    fields[1] = txt2;
    fields[2] = txt3;
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

然后你可以在getInfoJText2()方法中使用你的字段-array,顺序将始终相同.