2012-03-30 19 views
0

Ich entwerfe eine Tabelle, die Benutzern IN PLACE CELL BEARBEITEN ermöglicht, d. H. Benutzer kann Tabelle Cell in Place bearbeiten. Ich möchte die Zeile als "Edit" markieren, indem Sie das Bild von "EDIT" auf die erste Zelle der Zeile setzen, wenn eine Zelle dieser Zeile aktualisiert oder bearbeitet wurde. Ich habe eine CellEditorListener zu der JTable hinzugefügt, aber woher weiß ich, dass Zellendaten nicht geändert oder geändert worden sind? Wenn der Benutzer mit der Bearbeitung der Programmsteuerung fertig ist, bringt mich das zum editingStopped(), aber woher weiß ich, dass der Benutzer keine Daten aktualisiert hat?Woher weiß man, dass Zellendaten nicht geändert oder geändert wurden?

CellEditorListener cellEditorListener = new CellEditorListener() { 

public void editingStopped(ChangeEvent e) { 
    //If cell has been edited 
} 

public void editingCanceled(ChangeEvent e) { 
// If cell has not been updated       
} 
}; 

Ich gehe davon aus, dass ich meine Programmsteuerung zu editingCanceled erhalten wird(), wenn der Benutzer Rückkehr wurde, ohne dass Daten aus der Zelle zu aktualisieren. Gibt es einen anderen Ansatz?

Antwort

0

Sie sollten den Basisstatus Ihrer JTable speichern (das Modell klonen?), Bevor Sie Änderungen vornehmen. Auf diese Weise, wenn eine Zelle sich ändert, können Sie es auf den ursprünglichen Wert vergleichen, um zu sehen, ob seine geändert oder nicht

+0

A 'PropertyChangeEvent' kann in diesem Zusammenhang verwendet werden, wie in den Links von @mKorbel gezeigt. – trashgod

Verwandte Themen