Справка по массиву JTextField
-
12-09-2019 - |
Вопрос
Я пытался создать массив JFormattedTextField, который заполняется на панели.Как только происходит событие click, действия обрабатываются, и текстовые поля заполняются с помощью 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);
}
И, наконец, в методе Action Performmed у меня есть следующее, чтобы отправить текст обратно в эти поля здесь:
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, чтобы подтвердить, что генерируются числа, каковыми они и являются.Я постоянно получаю исключение nullpointer в этих строках:
balance[calc2count].setText(stBalance[calc2count]);
paidInt[calc2count].setText(stpaidInt[calc2count]);
Я попытался изначально установить текст в конструкторе, но это не имело никакого значения.Разве я не должен использовать массив текстовых полей для этого?
Решение
Я дважды инициировал JFormattedTextField с помощью этих строк:
private JFormattedTextField[] balance;
private JFormattedTextField[] paidInt;
а потом это:
JFormattedTextField[] balance=new JFormattedTextField[360];
JFormattedTextField[] paidInt=new JFormattedTextField[360];
удалив JFormattedTextField[] во втором наборе строк, я добился идеальной работы кода.