2016-05-10 4 views
-3

В настоящее время я пытаюсь отобразить данные из массива в текстовом поле, но будет отображаться только один элемент из массива. Это то, что я до сих пор:Как отобразить данные цикла в текстовом поле

while (j<count){ 

    if (b != "no") {     
     tfBIDI.setText(book[j]); 
    } else { 
     tfBIDO.setText(book[j]); 
    } 
    j++; 
} 

ли можно отобразить все данные из массива в текстовое поле?

Благодарим за помощь.

+2

Если 'b' является String, вы не можете сравнивать строки с«==»(или! =). Используйте '.equals()'. Кроме того, вам нужно добавить в текстовую область, а не вызывать '.setText()'. – KevinO

+1

Построить 'String' с нужным сообщением, а затем установить текст текстового поля. Или используйте 'tfBIDO.setText (Arrays.toString (книга));' –

+0

Использование append хорошо работает. Спасибо! –

ответ

0

попробовать это ...

String str_yes = ""; 
String str_no =""; 
while (j<count){ 

    if (b.equals("no")) { 
     no += book[j];      
    } else { 
    str_yes += book[j]; 
} 
    j++; 
    } 

tfBIDI.setText(str_no); 
tfBIDO.setText(str_yes); 
+0

В этом случае вы должны действительно использовать 'StringBuilder' для эффективности ... – fabian

0

Вы должны объединить текстовые данные книжного массива, и установить, что String как текст TextField только один раз. Сейчас каждая итерация Вашего цикла в то время обновляет TextFields текста, так что вы видите только значение последнего обновления

String[] data = {"1", "2", "3", "4"}; 

     StringBuilder sb = new StringBuilder(); 
     for (int idx = 0; idx < data.length; idx++) { 
      sb.append(data[idx]); 
      sb.append(", "); 
     } 

     String joinedData = sb.toString(); 
     //or 
     joinedData = Stream.of(data).collect(joining(",")); 

     textField.setText(joinedData); 
+0

Или [' StringJoiner'] (https://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html) ... – fabian