0

では、数の配列を取得して 1 行ずつ 1 行ずつ出力するコンソール アプリを作成しました。ここで、そのコンソール アプリ用に作成したクラスを取得し、作成中の別の 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

for ループの最後のビットがactionPerformed正しく機能していません。setText現在のテキストをその引数に置き換えますが、それをしたくないようです。これを修正するには、for ループの行を次のように置き換えます。

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