2009-08-07 9 views
1

Ich habe versucht, ein JFormattedTextField-Array zu erstellen, das in einem Fenster auffüllt. Sobald ein Klickereignis auftritt, werden die Aktionen verarbeitet und die Textfelder werden mit setText() gefüllt. Der Code für das Array und Initialisierung im Konstruktor hier:JTextfield-Array-Hilfe

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

Dann wird eine for-Schleife verwendet, um die Textfelder in der Platte hier zu instanziiert:

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); 
} 

Und schließlich in der Aktion Performmed Methode ich habe nach dem hier den Text auf diese Felder zurück zu senden:

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; 
     }  
} 

ich benutzte die println zu bestätigen, dass die Zahlen sind erzeugen, was sie sind. Ich immer eine Nullpointer-Ausnahme auf diesen Linien erhalten:

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

habe ich versucht, zunächst im Konstruktor setText aber es machte keinen Unterschied. Sollte ich dafür kein Textfeld-Array verwenden?

+0

Sind Sie sicher, dass balance und paidInt nicht null sind? –

+0

MEINE AUGEN! Sie sollten wirklich in die Verwendung eines JTable und TableModel schauen ... – Nate

+0

Ich erwog, eine Jtable zu verwenden und nur doppelte Arrays zu machen, die nach Berechnung gefüllt werden können. Benötige ich ActionListener für die Double Arrays oder einen TableModellistener? Oder beides? – Ruben

Antwort

1

ich die JFormattedTextField eingeleitet hatte zweimal mit diesen Zeilen:

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

und dann dem:

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

durch Entfernen JFormattedTextField [] in dem zweiten Satz von Linien, habe ich den Code zu arbeiten perfekt.

+0

Ruben - bitte nehmen Sie diese Antwort selbst an, damit sie nicht als unbeantwortete Frage angezeigt wird. –

+0

Entschuldigung, habe ich nicht realisiert. – Ruben