使用GUI的输入添加到ArrayList

时间:2015-07-20 20:01:28

标签: java user-interface arraylist

我首先在程序的另一部分创建了一个arraylist,然后用于循环将它放在文本区域中。现在,我想从文本字段中获取输入,将其添加到arraylist,并显示整个数组,包括添加的新元素。我再次尝试使用for循环,但是当我点击"添加"在运行时,程序只是冻结而没有任何反应。有什么建议? 谢谢。

private void btnDisplayActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // Using a for loop to display unsorted list, sorting the list, then using a for loop again to display the sorted list 

    String strUnsortedList = "";
    for(int i = 0; i < strCDNames.size(); i++)  {
         strUnsortedList += strCDNames.get(i) + "\n";

    }

    Collections.sort(strCDNames);

    String strSortedList = "";
    for(int i = 0; i < strCDNames.size(); i++)  {
         strSortedList += strCDNames.get(i) + "\n";

    }
    txtOutput.setText("Unsorted Order: \n" + strUnsortedList + "\nSorted Order: \n" + strSortedList);



}                                          

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
    String strAddedList = "";
    for (int i = 0; i < strCDNames.size(); i++)  {
          strAddedList += strCDNames.add(txtInputTitleArtist.getText());
    }
    txtOutput.setText(" " + strAddedList);
}                           

2 个答案:

答案 0 :(得分:2)

for (int i = 0; i < strCDNames.size(); i++)  {
    strAddedList += strCDNames.add(txtInputTitleArtist.getText());
}

这是一个无限循环。您不断添加到列表中,这意味着列表大小将继续增加。因此i 总是小于strCDNames.size()

相反,你可以这样做:

strCDNames.add(txtInputTitleArtist.getText());
String strAddedList = String.join(" ", strCDNames);

答案 1 :(得分:0)

Vivin是对的。我只想补充一点,arraylist add方法返回一个布尔值(https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#add-E-)。因此,在这种情况下,strAddedList甚至不会被正确更新。