来自ArrayList的文本区域addtext没有JavaFX中的逗号(,)

时间:2016-01-25 03:29:53

标签: listview arraylist printing javafx textarea

我有一个Arraylist AList,它有超过100000个项目。我需要在UI中显示每个数据项。但TeaxtArea.addtext(AList);以这种方式显示数据

  

[A,B,C,d ..........]

同样。我需要做的是打印一页。所以我必须通过PrinterJob

传递节点

无论如何我可以删除逗号并立即用换行符替换它。我不能使用appendText因此附加100000个项目使UI无响应。

PS:我已经从一个线程收集了数据,并将它放在一个ArrayList上。我在ListView上更新它没有问题,但是在TextArea上有这样的问题。我不会在不使用附加

的情况下更改打印格式

2 个答案:

答案 0 :(得分:0)

您可以预处理列表并使用StringBuilder创建一个新的字符串,如下所示:

List<String> list = new ArrayList<>();

for( int i=0; i < 100000; i++) {
    list.add("This is line nr " + i);
}

StringBuilder sb = new StringBuilder();
for( String text: list) {

    if( sb.length() > 0) {
        sb.append("\n");
    }

    sb.append(text);
}

textArea.appendText(sb.toString());

设置初始容量也可能有助于收集如此大量的内容。

如果您使用Java 8,您可能还需要查看StringJoiner

答案 1 :(得分:0)

让我们将aList视为String的ArrayList,

ArrayList<String> aList = new ArrayList<String>();
        aList.add("A");
        aList.add("B");
        aList.add("C");

然后在转到PrinterJob之前使用此代码,

StringBuffer listText = new StringBuffer();
for(String s : aList){
    listText.append(s+"\n");
}
System.out.println(listText);

试试这个......