我正在尝试将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 回答
您不需要在
list
的每个元素的循环中添加list.toString
,就像您正在做的那样:上面的循环应该简单地替换为
这会将
list
的所有内容添加到jLabel1
Why are you getting only the last element? 当您每次在方法
jButton2ActionPerformed
中创建一个新的ArrayList
,并且随后只向该新创建的列表添加一个元素时,您只获得jLabel1
中的最后一个元素您需要一个仅创建 once (仅初始化为 once )的列表,并且
jButton2ActionPerformed
的每个调用应该add
元素到现有列表(而不是每次都创建一个新的) .将
JLabel
的文本设置为包含列表中所有内容的文本的代码是正确的 . 如果只显示一个数字,则可能是因为标签太小或者列表只包含一个数字 .您不需要
for
循环,因为即使您只调用一次,list.toString()
也会生成包含所有内容的字符串 . 但它也可以使用多个调用,也就是使用for
循环 .您的问题是您正在为每个按钮创建一个新列表 . 这会导致您丢失上一个列表的所有内容,并仅保留添加的新号码 . 所以就是不要这样做 . 在程序启动时或适当时创建列表 .