在textfield中打印arraylist元素

时间:2016-04-30 07:05:37

标签: java arraylist jtextfield

实际上我想在textfield1中显示arraylist的第一个元素,在textfield 2中显示它的下一个元素我希望它在按下按钮时继续旋转。问题是它一直显示两个文本域中的最后一个元素

public class Teams
{
    String[] P={"Hi","there","you"};
}

Teams tm=new Teams();
for(int j=0;j<=tm.P.length; j++){
   textfield1.setText(tm.P[j]);
   textfield2.setText(tm.P[j+1]);
}

3 个答案:

答案 0 :(得分:0)

您可以执行额外检查(If-Else)。 如果textfield1的文本等于数组[1]那么 做交换。 如果它会在那里。它将交换它。如果没有,那么如果检查将被忽略。

到目前为止,这就是我理解你的问题的答案。

答案 1 :(得分:0)

从我的代码中得到的结果:

public class Teams{
    String[] P={"Hi","there","you"};
}

另一个班级

 //Inside some function in another class   
 Teams tm=new Teams();
 for(int j=0;j<=tm.P.length; j++){
    textfield1.setText(tm.P[j]);
    textfield2.setText(tm.P[j+1]);
 }

P中的变量Teams的长度为3.因此,在下面的代码段中,j的值从0更改为3.在{{{{ 1}}是2行

j

应将textfield2.setText(tm.P[j+1]); 作为索引ArrayIndexOutOfBoundsException,即j+1不存在3。

同样,当P的值为3时,这两行

P

应抛出 textfield1.setText(tm.P[j]); textfield2.setText(tm.P[j+1]); ,因为ArrayIndexOutOfBoundsException的索引对于第一行是3而对于第二行是4。

既然你已经在评论中明确指出没有抛出异常,我觉得这段代码必须位于P块中,该块捕获try - catch个对象。这也应该解释为什么这种行为会在两个文本字段中显示Exception的最后一个值。

P为1时,j此字段的文本将设置为最后一个元素textfield2.setText(tm.P[j+1])。现在,在"you"达到值2的下一个循环中,第一个文本字段j被设置为最后一个元素textfield2。但是在下一行中会抛出异常,因此不执行该行,因此"you"的文本仍为textfield2

最后当you为3时,第一行本身会抛出异常,以便第一行之后的代码不会被执行,而jtextfield1都有文本值{{1}存储在它们中,这就是显示的内容,并导致您突出显示的问题。

答案 2 :(得分:0)

运行此代码时,应该获得ArrayIndexOutOfBoundsException异常。您的代码将以例外终止。

根据你的例子,tm.P.length是3。

当j = 2时,

 textfield1= there
 textfield2= you

当j = 3时,

 textfield1= you

 textfield2.setText(tm.P[j+1]);

正在获取异常(ArrayIndexOutOfBoundsException)并从tm.P [4]开始终止流程(数组中没有这样的位置)但textfield2之前的值是&#34;你&#34;

所以你的最终结果是

 textfield1= you
 textfield2= you