有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用for循环设置jTextFields中的值

        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) 个答案

  1. # 1 楼答案

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

    如果没有,那么你的问题的答案是,不要用那种方式编写代码

    如果你确实使用IDE来创建你的UI,每次你把一个JTextField放到你的Swing应用程序上,IDE都会为你编写一些生成JTextField对象的代码

    NetBeansIDE中,它执行以下操作:

    // 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是您需要的JTextFields的数量

    或者,您仍然可以像往常一样使用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为您生成代码,如果方便的话,将对象放入容器也没有坏处

    下面是关于GUI控件数组的相关FAQ entry for NetBeans,它解释了您需要手工编写代码

    如果您使用的是另一个IDE,请参阅相关文档,查看IDE是否支持创建数组或控件集合的方法,或者您是否需要自己编写代码