簡體   English   中英

Java:有沒有更有效的方法將 JFrame 元素寫入數組

[英]Java: Is there a more efficient way to write JFrame elements into an array

這是我第一次發帖,如果問題太模糊或者我沒有很好地描述我的問題,我深表歉意。

我正在研究 Java JFrame 項目並遇到了一個小問題。 我需要實例化各種 JFrame 元素的 arrays 。 我現在所做的工作有效,但是效率很低,我想知道是否有更好、更簡單的方法來完成這項任務。 NetBeans 生成的生成代碼根據我提供的變量名實例化我的 object。 然后我正在編寫一個方法,在該方法中我手動輸入數組以及等於哪個元素。 這是自動生成的代碼:

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 dayDropBox、5 timeStartDropBox 和5 timeEndDropBox。

然后我將這些元素寫入 arrays

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 (JTextField textField: textFeilds)....

我這樣做的方法是使用Arrays.asList並將它們保存在List而不是數組中。 我也獲得了 stream 它們的優勢。

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

List<JTextField> textFields = Arrays.asList(field1, field2, field3, field4, field5);
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];
    }
    //...
}

注意:我不確定dayDropBox0dayDropBox1等的類型。將DropBox[]替換為適用的類型。

我不知道這是否是您專門尋找的,但您可以嘗試使用 for 循環。

for (int i = 0; i < dayDropBox.length; i++) {
    dayDropBox[i] = new dayDropBox();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM