2016-05-11 6 views
1

Ich brauche ein Programm zu machen, dass wir Sie CD-Titel hinzufügen, entfernen sie usw.Arraylist Schleife nicht angezeigt

Ich brauche eine Arraylist für mein Programm zu verwenden (die Songs zu speichern)

Code:

ArrayList songlist = new ArrayList(); 
    Collections.addAll(songlist, "Something", "Hard Days Night", "I am the Walrus", "Yesterday", "All the Lonely People"); 
    Collections.sort(songlist); 

    int songlistsize = songlist.size(); 
    for (int i = 0; i < songlistsize; i++) { 
     outputField.setText(i + ": " + songlist.get(i)); 

Das Problem ist, dass das Programm nur "Yesterday" anzeigt, und nichts anderes.

+0

Welche Art von Objekt ist 'outputField'? – Zircon

+0

posten Sie bitte Ihren gesamten Code, so dass wir das Problem reproduzieren können –

+0

Ich denke 'outputField' kann ein' JTextArea' oder ein 'JTextField' sein. Wenn du in einer Schleife mehrere Dinge hinzufügen willst, denke ich, dass "setText" das überschreibt, was derzeit existiert, aber "append" wird zu dem hinzufügen, was bereits existiert. –

Antwort

0
outputField.setText(i + ": " + songlist.get(i)); 

Weil Sie den letzten Wert einstellen und nicht anhängen. Tun Sie etwas wie das:

StringBuilder string = new StringBuilder(); 
    for (int i = 0; i < songlistsize; i++) { 
      string.append(songlist.get(i)); 
    } 
    outputField.setText(string); 

Es gibt viele andere Probleme mit dem Code, aber ich bleibe bei der Sache.

0

Wenn Sie versuchen, Ihre Ausgabe auf der Konsole zu drucken, werden Sie sehen, dass der Teil, der sich mit der Sammlung befasst, gut funktioniert. Aber da setText() den aktuellen String durch den letzten Songnamen ersetzt, wird nur "Yesterday" angezeigt, weil es am Ende der Sammlung steht. Darum sollten Sie versuchen,(), um den nächsten Song-Namen zu Ihrem String oder stellen Sie sicher, kopieren Sie die aktuellen String, fügen Sie den nächsten Punkt und schließlich verwendet setText()

Zum Beispiel anfügen:

String string = ""; 
for (int i = 0; i < songlistsize; i++) 
{ 
     string = outputField.getText() + songlist.get(i); 
     outputField.setText(string); 
}