好的,所以我创建了一个控制台应用程序,除其他外,它采用一系列数字并逐行打印出来。现在,我必须使用我为该控制台应用程序创建的类,并将其弹出到我们正在创建的单独的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]);
}
}
}
非常感谢任何指导我正确方向的帮助,谢谢!
答案 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]);