Arraylist в JLabel

Я пытаюсь напечатать содержимое Arraylist в Jlabel, но проблема в том, что он показывает только последнее целое число, которое я добавляю, если кто-нибудь может мне помочь, пожалуйста?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    for(int i = 0; i < list.size(); i++){
        jLabel1.setText(list.toString());
    }

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    list = new ArrayList<Integer>();
    int a = Integer.parseInt(jTextField1.getText());
    list.add(a);
}

Почему вы каждый раз обновляете список в методе jButton2?

Mohammadreza Khatami 09.12.2018 12:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
145
2

Ответы 2

Вам не нужно помещать добавление list.toString в цикл для каждого элемента list, как вы это делаете:

for(int i = 0; i < list.size(); i++){
   jLabel1.setText(list.toString());
}

Вышеупомянутый цикл следует просто заменить на

jLabel1.setText(list.toString());

Это добавит все содержимое list в jLabel1.

Почему вы получаете только последний элемент? Поскольку вы каждый раз создаете новый ArrayList в методе jButton2ActionPerformed и впоследствии добавляете только один элемент в этот вновь созданный список, вы получаете только последний элемент в вашем jLabel1.

У вас должен быть список, который создается только однажды (инициализируется только однажды), и каждый вызов jButton2ActionPerformed должен содержать элемент add в существующем списке (вместо того, чтобы каждый раз создавать новый).

Великие умы думают одинаково. +1.

Ole V.V. 09.12.2018 12:44

Ваш код для установки текста JLabel в текст, содержащий все содержимое списка, правильный. Если отображается только одно число, это либо потому, что метка слишком мала, либо потому, что список содержит только одно число.

Однако вам не нужен цикл for, поскольку list.toString() генерирует строку со всем содержимым, даже если вы вызываете ее только один раз. Но он должен работать и с несколькими вызовами, то есть с циклом for.

Ваша проблема в том, что вы создаете новый список для каждого нажатия кнопки. Это приводит к тому, что вы теряете все содержимое предыдущего списка и оставляете добавленным только новый номер. Так что просто не делай этого. Составьте список один раз при запуске вашей программы или когда это необходимо.

Да, ты прав, великие умы думают одинаково :) Но я лучше назову меня новичком;)

Lavish Kothari 09.12.2018 12:46

Другие вопросы по теме