bei JTable-Update bisherigen Wert auslesen

thoser

Mitglied
hallo,

ich habe folgendes Problem.
Wenn der Nutzer eine JTable-Zelle geändert hat, soll der bisherige Wert in einer Logtabelle samt Änderungsdatum, mandant, usw. abgespeichert werden. Wie komme ich an diesen Wert?
Hier der Code
(Die vielen element++ liegen an den Testdaten (unterschiedl. Anzahl Spalten))

von diesem Fragment geht das ganze los. (2 setValues sind sicherlich unnötig, ich weiß aber im Moment nicht wie ich das ändern kann)
Code:
// TableModelListener einfügen
                    jTable.getModel().addTableModelListener(new TableModelListener()
                    {
                        public void tableChanged(TableModelEvent event) 
                        {
                            int zeile = event.getFirstRow();
                            int spalte = event.getColumn();
                            System.out.println("event.getColumn " + spalte);
                            System.out.println("event.getRow " + zeile);
                            // Änderung mitloggen
                            if (spalte > -1)
                            {
                                model.setValueAt(model.getValueAt(zeile, spalte), zeile, spalte);
                            }
                        }
                    });
                    
                    
					VbrmEJB bean = createVbrmEJB();
					Object[] liste = bean.getFirst100Wertpapiere(mandant);
					int spalte;
					int zeile;
					int element = 0;  // Element im Array
					
					// durch die Liste iterieren
					for (zeile = 0; zeile < 100; zeile ++)
					{
					    for (spalte = 0; spalte < SPALTENANZAHL; spalte++)
					    {
					        try
                                                 {
                                                      model.setValueAt(liste[element], zeile, spalte);                            
                                                 }
                                                 catch (RuntimeException e1)
                                                   {
                                
                                                       e1.printStackTrace();
                                                   }
					        element++;
					        
					    }
					    model.addRow(rowData);
					    element++;
					    element++;
					    element++;
					    element++;
					    element++;
					    
					}


das hier wird aufgerufen
Code:
	  public void setValueAt(Object value, int row, int col) 
	  {
	    int rowIndex = row;
	    if (indexes != null) 
	    {
	      rowIndex = indexes[row];
	    }
	    
try
{
    // nur Änderungen mithämmern, wenn eingelesene Daten aktualisiert werden
	    GetMandantInfoRequest request = new GetMandantInfoRequest();
		  String tmp = this.getValueAt(0,0).toString();
		  request.setMandant(new BigDecimal(tmp));
		  GregorianCalendar kalender = new GregorianCalendar();
		  java.util.Date datum = null;
		  java.sql.Date dbdatum = null;
		  VbrmEJB aVbrmEJB = createVbrmEJB();
			
		  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		  try
		  {
			    datum = sdf.parse(this.getValueAt(0,1).toString());
			    dbdatum = new java.sql.Date(datum.getTime());
			    request.setStichtag(dbdatum);
		  }
		  catch (ParseException e1)
		  {
			// TODO Auto-generated catch block
//			    e1.printStackTrace();
		  }
		  request.setFeld(this.getColumnName(col));
		  request.setWertAlt_Log(this.getValueAt(row, col).toString());
		  request.setWertNeu_Log(value.toString());
		  request.setTabelle("WP_POSITION");
		  request.setRisikoArt(this.getValueAt(0,2).toString());
		  request.setRisikoSchl(this.getValueAt(0,3).toString());
			//     um 100% die richtige Zeitzone zu bekommen 
		  kalender.setTimeZone(TimeZone.getTimeZone("ECT"));
		  request.setTimestmp (new Timestamp(kalender.getTime().getTime()));
		  try
		  {
			    aVbrmEJB.setLogEntry(request);
		  }
		  catch (RemoteException e)
		  {
			    // TODO Auto-generated catch block
			    e.printStackTrace();
		  }    
		  
//    }
}
catch (Exception e)
{
    
}
	    super.setValueAt(value, rowIndex, col);
	    
	  }
 
Hallo,

hat sich erledigt.
Ich frage in der abgeleiteten setValue vorher den alten Wert mit getValue ab.
Jetzt weiß ich, das der Spruch "schlaf mal 'ne Nacht drüber' wirklich eine Bedeutung hat.:)
 
Zurück