Java: есть ли более эффективный способ записи элементов JFrame в массив - PullRequest
0 голосов
/ 01 мая 2020

Это моя первая публикация, поэтому я извиняюсь, если вопрос слишком расплывчатый или я не очень хорошо описываю свою проблему.

Я работаю над проектом Java JFrame и столкнулся с небольшим вопрос. Мне нужно создать экземпляры массивов различных элементов 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 dayDropBox, 5 timeStartDropBox и 5 timeEndDropBox.

Затем я записываю эти элементы в массивы

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;
    }

Заранее спасибо за помощь

Ответы [ 3 ]

0 голосов
/ 01 мая 2020

Полагаю, вы сохраняете поля, чтобы иметь возможность получить к ним доступ все вместе, вероятно, для чего-то вроде for (JTextField textField : textFeilds).....

Я делаю это, используя Arrays.asList и удерживая их в List вместо массива. Я также получаю преимущество для их потоковой передачи.

Пример (при условии, что вы хотите очистить текст от всех текстовых полей):

List<JTextField> textFields = Arrays.asList(field1, field2, field3, field4, field5);
textFields.stream().forEach(textField->textField.setText(""));
0 голосов
/ 01 мая 2020

Используйте массив, как показано ниже:

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];
    }
    //...
}

Примечание: Я не уверен, тип dayDropBox0, dayDropBox1 et c. Замените DropBox[] на соответствующий тип.

0 голосов
/ 01 мая 2020

Я не знаю, если это то, что вы конкретно ищете, но вы можете попробовать использовать для циклов.

for (int i = 0; i < dayDropBox.length; i++) {
    dayDropBox[i] = new dayDropBox();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...