ArrayList <string>无法转换为字符串。

时间:2015-06-09 22:38:50

标签: java arraylist collections

好吧,我正在制作一个CD收藏计划,一切顺利,因为我按照我的课程,然后我遇到了想要让它出现在jTextArea的问题。我打赌有一个简单的解决方案,但我找不到一个。我是新手,任何答案都会受到赞赏,我也在这里寻找答案,但我没有发现任何理解。

  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    jButton1.setEnabled(true);
    jButton2.setEnabled(false);
    jButton3.setEnabled(false);
    jButton4.setEnabled(false);      //buttons                                       

    ArrayList<String> CD = new ArrayList();  //list
    Collections.addAll(CD, "\nEd Sheeran - X\n", "\nNirvana - Nevermind\n", "\nShania Twain - Up!\n", "\nLights - Little Machines\n", "\nTaylor Swift - 1989\n");          //PreAdded CDs
    Collections.sort(CD);
    jTextArea1.setText(CD);    //it works if i do System.out.println(CD) ? I need it to go to jTextArea1 though.

4 个答案:

答案 0 :(得分:4)

System.outPrintStreamoverload of println takes an Object as a parameter,最终会调用toString()。这就是System.out.println(CD)有效的原因。

相比之下,JTextArea会继承其setText() method from JTextComponent,并且会接受String,而不是ObjectArrayList无法隐式转换为String。您可以轻松致电toString()以明确转换为String

答案 1 :(得分:3)

致电时

System.out.println(CD);

它相当于这个

System.out.println(CD.toString());

所以你需要的是

jTextArea1.setText(CD.toString()); 

答案 2 :(得分:0)

setText期望一个 String。您有许多String的列表。您必须自己决定如何将这些String组合成一个。

答案 3 :(得分:0)

JTextArea采用String参数,而不是ArrayList。在继续之前,您需要将CD ArrayList转换为String(以您认为最佳的方式)。