2012-03-29 9 views
1

Ich möchte wissen, warum meine getvalueAt() alte Daten auswählt, wenn Geben Sie gedrückt ist.
Ich habe alle Update und Table Change Module versucht, aber ich konnte es nicht funktionieren. Ich mache eine Excel-Sheet-ähnliche Struktur in JTable, in dem eine Zeile bei Änderung in einer anderen Zeile aktualisiert wird.Jtable - getvalueAt() Problem

public void setValueAt(Object aValue, int row, int column) { 
     if(column == 2 || column == 3 || column == 4 || column == 5) 
    { 
     System.out.println("2 is: "+getValueAt(row, 2)); 
     System.out.println("3 is: "+getValueAt(row, 3)); 
     System.out.println("4 is: "+getValueAt(row, 4)); 
     long closingbalance = Long.parseLong(getValueAt(row,2).toString()) 
      + Long.parseLong(getValueAt(row,3).toString()) 
      - Long.parseLong(getValueAt(row,4).toString()); 
     System.out.println("closing: "+closingbalance); 
     super.setValueAt(closingbalance,row, 6); 
    }    
    super.setValueAt(aValue, row, column); 
} 
+0

folgen Sie bitte diesem Führungslinie vor einigen Fragen beim nächsten Mal http://stackoverflow.com/editing-help zu schreiben. Und bitte, bitte, stoppen Sie die Ellipse Morse Code schreiben, wo ein einzelner Punkt erwartet wird. –

Antwort

1

Ich kann Ihre Frage nicht zu beantworten auf einem anderen Forum können, weil eine neue Foren Version me crazy

  • gibt keinen Grund, Parsing Wert von JTable fahren,

  • JTable implemets alle wichtigen Datentypen

  • Beispiele here oder here

  • für eine bessere Hilfe bearbeitet Ihre Frage mit SSCCE

+0

+1 für die Dateitypen [Standard-Renderer/-Editor] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender). – trashgod

1

Stellen Sie sicher, dass Ihre CellEditor abgeschlossen hat und dass Ihr TableModel in einem konsistenten Zustand befindet, wenn Sie andere Werte zugreifen. Dieser example überschreibt getValueAt(), um den Wert der abhängigen Zelle abzuleiten. Um zu vermeiden, so viel zu analysieren, sollte Ihre TableModel wahrscheinlich nur Instanzen von Long10 enthalten.

Angenommen, Sie müssen wirklich überschreiben setValueAt(), ist es nicht klar, was TableModel Sie verwenden. Wenn Sie DefaultTableModel erweitern, ist die super.setValueAt() Implementierung angemessen; Wenn Sie AbstractTableModel erweitern, ist die Superimplementierung leer und Ihre muss das entsprechende Ereignis auslösen.