Re: 5th col dies, cols 6 thru 15 move 1 col left, 15th col is born
On 4/20/2013 12:02 PM, clusa@aol.com wrote:
On Saturday, April 20, 2013 11:17:52 AM UTC-4, Eric Sosman wrote:
JTable should be straightforward. You'd extend AbstractTableModel to handle
the "sliding," calling fireTableDataChanged() to update the display.
Conveniences like scrolling would come for free (almost), and the JTable's
display might well be more efficient than managing 4500 JLabels. No, I don't
have example code. -- Eric Sosman esosman@comcast-dot-net.invalid
I would also be able to eloquently color specific cells.
You can be as eloquent as you like with a TableCellRenderer,
most likely an extension of DefaultTableCellRenderer. This time,
I've got some example code (not eloquent, and not colorized, but
it should demonstrate the approach):
/**
* A {@code TableCellRenderer} that centers displayed text.
*/
class CenteredRenderer extends DefaultTableCellRenderer {
private static CenteredRenderer instance;
static CenteredRenderer instance() {
if (instance == null) {
instance = new CenteredRenderer();
}
return instance;
}
private CenteredRenderer() {
assert SwingUtilities.isEventDispatchThread();
}
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean select, boolean focus, int row, int col) {
assert SwingUtilities.isEventDispatchThread();
Component comp = super.getTableCellRendererComponent(table,
value, select, focus, row, col);
if (comp instanceof JLabel) {
((JLabel) comp).setHorizontalAlignment(SwingConstants.CENTER);
}
return comp;
}
}
I use it this way, in the constructor of a class extending
JTable:
TableColumnModel colmod = getColumnModel();
for (int c = 0; c < COLUMNS; ++c) {
TableColumn col = colmod.getColumn(c);
if ( /* I want this column centered ... */ ) {
col.setCellRenderer(CenteredRenderer.instance());
}
}
--
Eric Sosman
esosman@comcast-dot-net.invalid