在Java Gui应用程序中打印数组的各个部分

时间:2013-09-02 00:09:47

标签: java arrays swing actionlistener

好的,所以我创建了一个控制台应用程序,除其他外,它采用一系列数字并逐行打印出来。现在,我必须使用我为该控制台应用程序创建的类,并将其弹出到我们正在创建的单独的GUI应用程序中。我有所有其他方法工作正常,但对于我的生活我不能让数组方法正确打印出来。它只是给我输入文本字段的最后一个数字。我希望有人可以给我一个推动,帮助我弄清楚这一部分,这样我就可以继续前进,并获得整个SpringLayout的东西,(新任务的主要部分)我限制在这里我可以告诉你因为这是当前的任务,所以我必须尽可能地坚持这些东西。请不要只是将代码作为答案发布,(因为我不能使用它),谢谢。 这是我对数组方法的原始项目所拥有的:

  int [] getArray(int x)
  {
    breakUpNum(x);
    return numAry;
  } 

从那里开始,在我的新课程中,我有这个,试图让它打印出来:

private class ButtonTest implements ActionListener
{
    public void actionPerformed(ActionEvent ae)
    {
        Lab1 tester = new Lab1();

        int[] test4 = tester.getArray(num);

        for(int i = 0; i < test4.length; i ++)
        {
        crossTest.getArrCross.setText("" + test4[i]);
        }              

    }
}

非常感谢任何指导我正确方向的帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

setText就是这样,将您传递的文本设置为当前文本内容,它不会附加它。

如果您使用JTextArea,则可以使用append方法...但是,对于JTextField,您需要采用不同的方法。

现在你可以使用getArrCross.setText(getArrCross.getText() + test4[i]) ......但是坦率地说,这是相当低效的,因为每次调用setText都会进行一次油漆事件......

StringBuilder sb = new StringBuilder(128);
for(int i = 0; i < test4.length; i ++)
{
    sb.append(test4[i]);
}          
crossTest.getArrCross.setText(sb.toString());

现在,如果要分隔每个元素,则需要添加

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

sb.append(test4[i]);之前

答案 1 :(得分:1)

for循环中actionPerformed的最后一位无法正常工作。 setText用它的参数替换当前文本,看起来你不想这样做。要解决此问题,请使用以下命令替换for循环中的行:

crossTest.getArrCross.setText(crossTest.getArrCross.getText() + test4[i]);