使用for循环在jTextFields中设置值

时间:2014-12-18 01:40:11

标签: java arrays swing for-loop jtextfield

        String[] words = str.split("\\+");
        jTextField43.setText(words[0]);
        jTextField44.setText(words[1]);
        jTextField45.setText(words[2]);
        jTextField46.setText(words[3]);
        jTextField47.setText(words[4]);
        jTextField48.setText(words[5]);
        jTextField49.setText(words[6]);
        jTextField50.setText(words[7]);
        jTextField51.setText(words[8]);
        jTextField52.setText(words[9]);
        jTextField53.setText(words[10]);
        jTextField54.setText(words[11]);
        jTextField55.setText(words[12]);
        jTextField56.setText(words[13]);
        jTextField57.setText(words[14]);
        jTextField58.setText(words[15]);

我想,

        for(int i=0;i<15;i++)
        {
              jTextField[i+43].setText(words[i]));
        } 

我该怎么办?

1 个答案:

答案 0 :(得分:2)

我只是在这里猜测,但看起来好像所有这些JTextFields都是由IDE使用一些图形拖动删除编辑器(?)生成的

如果没有,那么您的问题的答案是,不要以这样的方式编写代码

如果您 使用IDE来创建UI,那么每次将JTextField放到Swing应用程序上时,IDE都会为您编写一些生成{{1}的代码对象。

NetBeans IDE中,它执行以下操作:

JTextField

以及代码折叠部分中的其他位置标记为&#34;生成代码&#34;那里会是这样的:

// Variables declaration - do not modify                     
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
//etc...
// End of variables declaration     

GUI并不足够聪明,知道所有jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jTextField1.setText("jTextField1"); jTextField2.setText("jTextField2"); // plus some layout code that positions your controls... 都以某种方式相关,您希望能够方便地遍历它们。如果您自己编写代码,而不是拖放控件,它就像以下一样简单:

JTextFields

其中35是你需要的JTextField数量。

或者,你仍然可以使用你的IDE来创建你的GUI,你可以像以前那样拖放它,然后将所有这些IDE生成的控件引用到数组中以便于迭代后:

private JTextField[] jTextFields = new JTextField[35]; 

// initialise and set properties for all those JTextFields...
jTextFields[0] = new JTextField();
/// etc ...

如果您更愿意使用同样简单的ArrayList或类似容器:

private JTextField[] jTextFields = new JTextField[35];
jTextFields[0] = jTextField1;
jTextFields[1] = jTextField2;
// etc...

对于Netbeans,IDE违反了所有编程约定,并开始在private List<JTextField> jTextFields = new ArrayList<>(); jTextFields.add( jTextField1 ); jTextFields.add( jTextField2 ); // etc... 而不是1编号控件,因此当您放置时,请注意一个错误的错误0进入jTextField1,依此类推。更好的是,为所有控件提供有意义的名称!

我想底线是不要害怕自己编写代码,而不是让你的IDE为你生成代码,如果是这样,那么将对象放入容器也没有坏处。对你方便。

这里有关于GUI控件数组的相关FAQ entry for NetBeans,它解释了您需要手动编写代码。

如果您正在使用其他IDE,请参阅相关文档,了解IDE是否支持创建数组或控件集合的方式,或者您是否必须自己编写代码。