Java: Swing: JTable and TableModel: Changes in 1.4
(beta1, beta2, beta3, rc1, 1.4.1beta, 1.4.1rc, until 1.4.2)
setDataVector code allows null arguments, but documentation at the same time forbids it
setDataVector fires less events (it used to fire two)
moveRow (which should really be called moveRows): 'to' is specified to be new index of 'start', not indeterminate
removeColumn finally fires correct events
moveColumn doesn't destroy the selection anymore
addColumn allows 'null' column name
documentation mentions getColumnIndexAtX() may not correspond to JTable order (duplicated, as usual, in TableColumnModel).
replaced weird 1.3 setOpaque() optimization by another logic in isOpaque(). (that seems to be always right)
Two-Vector constructor now creates DefaultTableModel (but not the Object, Object one).
Default color for grid is specified to be LAF-dependent
Support for "surrendersFocusOnKeystroke"
Changed layout behaviour (always revalidate()s)
Changed focus implementations
Support for DND
selectAll() fixed with no rows/no columns; but still strange
selection handling changes, still broken?
tableChanged (i.e. any change of the TableModel) removes the editor; not done anymore (now it removes the editor too seldom again)
setRowSelectionAllowed/setColumnSelectionAllowed repaint if changed
weird: if the focus moves outside the JTable (inside the window), cell editing is canceled (and not tried to stop first), slightly fixed, now listens for "permanentFocusOwner", can be disabled by client property "termniateEditOnFocusLost"; first tries to stop editing
ateEditOnFocusLost", first tries to stop editing
row model bug (different row heights didn't work with some model changes) fixed
places columns according to its ComponentOrientation
(overzealous?) paint optimization in response to selection event; accessibility
MouseListener tests for consumed events
DND "support", changed
Action map is stored in the LAF defaults, not in the user defaults
different input map with different component orientation (dynamically), changed again
keyboard mappings for cut/copy/paste
DND transfer changes
places columns according to its ComponentOrientation (backwards-compatibility problems since part of that code are also in JTable, so an old LAF and a new JTable (or <=>) don't mix!).
changes (but not the initial value!) of ComponentOrientation are also set on header.
places column headers according to its ComponentOrientation
default renderer is UIResource, Accessibility
additional background painting behind the dragged column (if the renderer is transparent). Still repaints the parent's background, which in general is broken.
improved Cursor management in MouseListener (doesn't destroy user-set Cursor anymore)
changed MouseListener, still only moves columns by one position for each mouseDragged event, and allows moving out of bounds
places columns according to its component orientation
some strange mouse handling code (for example, it requires a JScrollPane (!) and calls setSize() on the table; possibly this is a workaround for JScrollPane strangenesses, but it isn't documented as such). It flickers strangely with right-to-left orientation when resizing columns below minimum size.
JScrollPane requirement removed, still very weird (JScrollPane should be fixed!), defaultDropTargetListener
(C) 2001-2009 Christian Kaufhold (email@example.com)