java - 使用 for 循环在 jTextFields 中设置值

标签 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]));
        } 

我该怎么办?

最佳答案

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

如果不是,那么您问题的答案是,不要那样编写代码!

如果您确实使用 IDE 创建 UI,则每次您将 JTextField 拖放到 Swing 应用程序上时,IDE 都会为您编写一些代码,生成 JTextField 对象。

NetBeans IDE 它执行以下操作:

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

在标记为“生成的代码”的代码折叠部分的其他位置,会有类似以下内容的内容:

jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();

jTextField1.setText("jTextField1");
jTextField2.setText("jTextField2");

// plus some layout code that positions your controls...

GUI 不够智能,无法知道所有这些 JTextFields 都以某种方式相关,并且您希望能够方便地循环遍历它们。如果您自己编写代码,则无需拖放控件,这很简单:

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

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

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

或者,您仍然可以使用 IDE 通过拖放创建 GUI,就像您习惯做的那样,然后将对所有这些 IDE 生成的控件的引用放入数组中,以便以后轻松迭代:

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

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

private List<JTextField> jTextFields = new ArrayList<>();
jTextFields.add( jTextField1 );
jTextFields.add( jTextField2 );
// etc...

对于 Netbeans,IDE 违反了所有编程约定,并从 1 而不是 0 开始编号控件,因此请注意以下情况下的相差一错误:您将 jTextField1 放入 jTextFields[0] 中,依此类推。更好的是,为所有控件指定有意义的名称!

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

这是相关的 FAQ entry for NetBeans关于 GUI 控件数组,说明您需要手动对其进行编码。

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

关于java - 使用 for 循环在 jTextFields 中设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537899/

相关文章:

java - 带 Spring Roo 的嵌入式套件(脚手架)

java - Eclipse PDE 插件导出

java - JPanel 在继续之前不会等待用户输入

java - 我的 jframe 变成空白,没有颜色

java - 使用自定义类名反序列化具有不同根名称的 json

php - 检查 mysql 行是否不在数组中

javascript - 使用Java中的Map从字谜数组中查找唯一的单词

javascript - Spreaded Array 上的意外结果拼接

java - 单击和调整大小时滚动条消失

java - 外观设计模式和抽象