diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | javax/swing/JTable.java | 26 |
2 files changed, 30 insertions, 1 deletions
@@ -1,3 +1,8 @@ +2006-05-05 Roman Kennke <kennke@aicas.com> + + * javax/swing/JTable.java + (tableChanged): Sync selection model with table model changes. + 2006-05-05 Audrius Meskauskas <AudriusA@Bioinformatics.org> * javax/swing/plaf/basic/BasicTreeUI.java (paint): Return early diff --git a/javax/swing/JTable.java b/javax/swing/JTable.java index 117560832..8a5dbb022 100644 --- a/javax/swing/JTable.java +++ b/javax/swing/JTable.java @@ -1955,9 +1955,33 @@ public class JTable // affect the size parameters of the JTable. Otherwise we only need // to perform a repaint to update the view. if (event == null || event.getType() == TableModelEvent.INSERT) - revalidate(); + { + // Sync selection model with data model. + if (event != null) + { + int first = event.getFirstRow(); + if (first < 0) + first = 0; + int last = event.getLastRow(); + if (last < 0) + last = getRowCount() - 1; + selectionModel.insertIndexInterval(first, last - first + 1, true); + } + revalidate(); + } if (event == null || event.getType() == TableModelEvent.DELETE) { + // Sync selection model with data model. + if (event != null) + { + int first = event.getFirstRow(); + if (first < 0) + first = 0; + int last = event.getLastRow(); + if (last < 0) + last = getRowCount() - 1; + selectionModel.removeIndexInterval(first, last); + } if (dataModel.getRowCount() == 0) clearSelection(); revalidate(); |