好吧,我正在制作一个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.
答案 0 :(得分:4)
System.out
是PrintStream
和overload of println
takes an Object
as a parameter,最终会调用toString()
。这就是System.out.println(CD)
有效的原因。
相比之下,JTextArea
会继承其setText()
method from JTextComponent
,并且会接受String
,而不是Object
。 ArrayList
无法隐式转换为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(以您认为最佳的方式)。