Arraylist到JLabel

我正在尝试将arraylist内容打印到Jlabel,但问题是它只显示我添加的最后一个整数,如果有人可以帮我请?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    for(int i = 0; i < list.size(); i++){
        jLabel1.setText(list.toString());
    }

}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    list = new ArrayList<Integer>();
    int a = Integer.parseInt(jTextField1.getText());
    list.add(a);
}

回答(2)

3 years ago

您不需要在 list 的每个元素的循环中添加 list.toString ,就像您正在做的那样:

for(int i = 0; i < list.size(); i++){
   jLabel1.setText(list.toString());
}

上面的循环应该简单地替换为

jLabel1.setText(list.toString());

这会将 list 的所有内容添加到 jLabel1

Why are you getting only the last element? 当您每次在方法 jButton2ActionPerformed 中创建一个新的 ArrayList ,并且随后只向该新创建的列表添加一个元素时,您只获得 jLabel1 中的最后一个元素

您需要一个仅创建 once (仅初始化为 once )的列表,并且 jButton2ActionPerformed 的每个调用应该 add 元素到现有列表(而不是每次都创建一个新的) .

3 years ago

JLabel 的文本设置为包含列表中所有内容的文本的代码是正确的 . 如果只显示一个数字,则可能是因为标签太小或者列表只包含一个数字 .

您不需要 for 循环,因为即使您只调用一次, list.toString() 也会生成包含所有内容的字符串 . 但它也可以使用多个调用,也就是使用 for 循环 .

您的问题是您正在为每个按钮创建一个新列表 . 这会导致您丢失上一个列表的所有内容,并仅保留添加的新号码 . 所以就是不要这样做 . 在程序启动时或适当时创建列表 .