JavaSwingJTable and TableModel: Changes in 1.4


Changes in 1.4

(beta1, beta2, beta3, rc1, 1.4.1beta, 1.4.1rc, until 1.4.2)

AbstractTableModel

added getTableModelListeners

DefaultTableModel

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

DefaultTableColumnModel

removeColumn finally fires correct events

moveColumn doesn't destroy the selection anymore

added getColumnModelListeners

addColumn allows 'null' column name

documentation mentions getColumnIndexAtX() may not correspond to JTable order (duplicated, as usual, in TableColumnModel).

DefaultTableCellRenderer

replaced weird 1.3 setOpaque() optimization by another logic in isOpaque(). (that seems to be always right)

JTable

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?

Accessible changes(?)

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

BasicTableUI

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.

defaultDropTargetListener

JTableHeader

setFocusable(false);

places column headers according to its ComponentOrientation

default renderer is UIResource, Accessibility

BasicTableHeaderUI

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

To Do: DefaultCellEditor


(C) 2001-2009 Christian Kaufhold (swing@chka.de)