Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:有没有更有效的方法将JFrame元素写入数组_Java_Arrays_Jframe - Fatal编程技术网

Java:有没有更有效的方法将JFrame元素写入数组

Java:有没有更有效的方法将JFrame元素写入数组,java,arrays,jframe,Java,Arrays,Jframe,这是我第一次发帖,如果问题太模糊或者我没有很好地描述我的问题,我深表歉意 我正在从事一个JavaJFrame项目,遇到了一个小问题。我需要实例化各种JFrame元素的数组。到目前为止,我所做的工作是有效的,但是效率很低,我想知道是否有更好、更简单的方法来完成这项任务。NetBeans生成的代码根据我提供的变量名实例化了我的对象。然后我写了一个方法,在这里我手动输入数组,以及等于哪个元素。以下是自动生成的代码: private javax.swing.JTextField activityStar

这是我第一次发帖,如果问题太模糊或者我没有很好地描述我的问题,我深表歉意

我正在从事一个JavaJFrame项目,遇到了一个小问题。我需要实例化各种JFrame元素的数组。到目前为止,我所做的工作是有效的,但是效率很低,我想知道是否有更好、更简单的方法来完成这项任务。NetBeans生成的代码根据我提供的变量名实例化了我的对象。然后我写了一个方法,在这里我手动输入数组,以及等于哪个元素。以下是自动生成的代码:

private javax.swing.JTextField activityStartTxt0;
private javax.swing.JTextField activityStartTxt1;
private javax.swing.JTextField activityStartTxt2;
private javax.swing.JTextField activityStartTxt3;
private javax.swing.JTextField activityStartTxt4;
相同的代码用于实例化五个activityEndTxt、5天Dropbox、5天StartDropbox和5天Dropbox

然后我将这些元素写入数组

public void addArrays(){
        dayDropBox[0] = dayDropBox0;
        dayDropBox[1] = dayDropBox1;
        dayDropBox[2] = dayDropBox2;
        dayDropBox[3] = dayDropBox3;
        dayDropBox[4] = dayDropBox4;

        activityStartTxt[0] = activityStartTxt0;
        activityStartTxt[1] = activityStartTxt1;
        activityStartTxt[2] = activityStartTxt2;
        activityStartTxt[3] = activityStartTxt3;
        activityStartTxt[4] = activityStartTxt4;

        timeStartDropBox[0] = timeStartDropBox0;
        timeStartDropBox[1] = timeStartDropBox1;
        timeStartDropBox[2] = timeStartDropBox2;
        timeStartDropBox[3] = timeStartDropBox3;
        timeStartDropBox[4] = timeStartDropBox4;

        activityEndTxt[0] = activityEndsTxt0;
        activityEndTxt[1] = activityEndsTxt1;
        activityEndTxt[2] = activityEndsTxt2;
        activityEndTxt[3] = activityEndsTxt3;
        activityEndTxt[4] = activityEndsTxt4;

        timeEndDropBox[0] = timeEndDropBox0;
        timeEndDropBox[1] = timeEndDropBox1;
        timeEndDropBox[2] = timeEndDropBox2;
        timeEndDropBox[3] = timeEndDropBox3;
        timeEndDropBox[4] = timeEndDropBox4;
    }

提前感谢您的帮助

我不知道这是否是您特别想要的,但您可以尝试使用for循环

for (int i = 0; i < dayDropBox.length; i++) {
    dayDropBox[i] = new dayDropBox();
}
for(int i=0;i
我假设您保留这些字段是为了能够一起访问它们,可能是为了(JTextField textField:textfields)之类的
for…

我这样做的方法是使用
数组.asList
并将它们保存到
列表中,而不是数组中。我也有优势流式传输它们

示例(假设要清除所有文本字段的文本):

List textFields=Arrays.asList(字段1、字段2、字段3、字段4、字段5);
textFields.stream().forEach(textField->textField.setText(“”);

使用如下所示的数组:

public void addArrays(){
    DropBox[] dayDropBoxes = {dayDropBox0, dayDropBox1, dayDropBox2, dayDropBox3, dayDropBox4};
    for(int i=0; i < dayDropBoxes.length && i < dayDropBox.length; i++){
        dayDropBox[i] = dayDropBoxes[i];
    }
    //...
}
public void addArrays(){
DropBox[]daydropbox={dayDropBox0,dayDropBox1,dayDropBox2,dayDropBox3,dayDropBox4};
对于(int i=0;i

注意:我不确定
dayDropBox0
dayDropBox1
等的类型。用适用的类型替换
DropBox[]

谢谢@Ayrock618,但不幸的是,这不起作用,因为我没有创建新的DropBox,只是将现有的DropBox放入数组中。您可以拥有JTextFields数组。GUI构建器可能不支持JTextField数组,这也是为什么Swing GUI应该手动构建的另一个原因。感谢@GilbertLeBlanc,我同意Swing GUI应该手动构建,但是我的类要求我使用JFrameYour注释是非secuitor。手动GUI有一个JFrame、一个或多个JPanel和各种Swing组件。
public void addArrays(){
    DropBox[] dayDropBoxes = {dayDropBox0, dayDropBox1, dayDropBox2, dayDropBox3, dayDropBox4};
    for(int i=0; i < dayDropBoxes.length && i < dayDropBox.length; i++){
        dayDropBox[i] = dayDropBoxes[i];
    }
    //...
}