
Add Column Selection to JTables #22
Chapter 3, Tables and Trees
|
107
HACK
When you run this version of ColumnResizer, the table should look like
Figure 3-3.
Having done this, it’s still possible to crush either table cells or headers if
you resize (programatically or by dragging the frame’s corner) to a point
where there’s just not enough room for all the content. If you really wanted
to keep header cells intact, you could alter the previous code to set the
TableColumn’s minimum width to the preferred width of the header cell,
assuming the header isn’t much wider than the content. Ultimately, it’s
really a question of what data you’re putting in the table and what looks
right to you.
Hacking the Hack
“But,” you might be saying, “what if I don’t have my table data in advance?”
If you have some idea of what the data is probably going to be like, you
could create your table, add this “prototype” data as a row, size the col-
umns, and then remove the prototype…all before ever making the table visi-
ble. That would give your users reasonable default sizing, and then they
could resize columns by dragging header borders as desired. Of course, you
could always hook up a
TableModelListener and resize the columns every
time data is inserted, deleted, or updated, but having the column widths
jump around magically can be very annoying.
H A C K
#22
Add Column Selection to JTables Hack #22
So, why can’t I select a column ...