0

好的,所以我创建了一个控制台应用程序,除其他外,它获取一组数字并逐行打印出来。现在,我必须使用我为该控制台应用程序创建的类,并将其弹出到我们正在创建的单独的 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]);
        }              

    }
}

任何为我指明正确方向的帮助将不胜感激,谢谢!

4

2 回答 2

2

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

如果要使用JTextArea,则可以使用它的append方法……但是,对于 a ,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]);

于 2013-09-02T00:14:20.540 回答
1

actionPerformedfor 循环中的最后一点无法正常工作。setText用它的参数替换当前文本,你似乎不想这样做。要修复它,请将 for 循环中的行替换为:

crossTest.getArrCross.setText(crossTest.getArrCross.getText() + test4[i]);
于 2013-09-02T00:14:53.587 回答