Справка по массиву JTextfield - PullRequest
       17

Справка по массиву JTextfield

1 голос
/ 08 августа 2009

Я пытался создать массив JFormattedTextField, который заполняет панель. Как только происходит событие щелчка, действия обрабатываются, и текстовые поля заполняются с помощью setText (). Код для массива и инициализации находится в методе конструктора здесь:

JFormattedTextField[] balance=new JFormattedTextField[360];
JFormattedTextField[] paidInt=new JFormattedTextField[360];

Тогда цикл for используется для создания экземпляров текстовых полей на панели здесь:

for(count=0;count<360;++count)
{
    counter[count]=Integer.toString(count + 1);
    labPayment[count]=new JLabel(counter[count]);
    scheduler.add(labPayment[count]);
    balance[count]=new JFormattedTextField(amountFormat);
    scheduler.add(balance[count]);
    balance[count].addActionListener(this);
    paidInt[count]=new JFormattedTextField(amountFormat);
    scheduler.add(paidInt[count]);
    paidInt[count].addActionListener(this);
}

И, наконец, в методе «Выполнение действия» у меня есть следующее, чтобы отправить обратно текст в эти поля:

if(e.getSource()==butSchedule)
{
        for(calc2count=0;calc2count<360; ++calc2count)
        {
            paidint[calc2count]=dmtgAmount * (dmtgRate / 12);
            payout[calc2count]=dmtgPayment- paidint[calc2count];
            dmtgAmount=dmtgAmount - payout[calc2count];
            stBalance[calc2count]=Double.toString(dmtgAmount);
            stpaidInt[calc2count]=Double.toString(paidint[calc2count]);

        //  balance[calc2count].setText(stBalance[calc2count]);
        //  paidInt[calc2count].setText(dollarsandcents.format(stpaidInt[calc2count]));

            System.out.println((stBalance[calc2count]);
            System.out.println("   ");
            System.out.println((stpaidInt[calc2count]);
            System.out.println("   ");
            //if structure used to default to $0 if the loan balance becomes $0 or less
            if(dmtgAmount<0)
                break;

            //if structure used to default to $0 if the interest becomes $0 or less
            if(paidint[calc2count]<0)
                break;
        }     
}

Я использовал println, чтобы подтвердить, что числа генерируются, что они и есть. Я постоянно получаю исключение нулевого указателя в этих строках:

balance[calc2count].setText(stBalance[calc2count]);
paidInt[calc2count].setText(stpaidInt[calc2count]);

Я пытался изначально установить текст в конструкторе, но это не имело никакого значения. Разве я не должен использовать массив текстового поля для этого?

1 Ответ

1 голос
/ 08 августа 2009

Я дважды инициировал JFormattedTextField с этими строками:

    private JFormattedTextField[] balance;
private JFormattedTextField[] paidInt;

, а затем это:

JFormattedTextField[] balance=new JFormattedTextField[360];
JFormattedTextField[] paidInt=new JFormattedTextField[360];

удалив JFormattedTextField [] во втором наборе строк, я получил код для идеальной работы.

...