|
Appendix II |
Top Previous |
Source code to make cell spanning possible for a custom JTable subclass.
It is assumed that spanDrawer represents a SpanDrawer instance.
Override JTable's method
public Component prepareRenderer(TableCellRenderer renderer, int row, int column);
to look like:
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component normalComp;
boolean useSpan = spanDrawer.getUseSpan();
if (useSpan && spanDrawer.isCellMerged(row, column)) {
CellSpan cs = spanDrawer.getSpanModel().getCellSpanAt(row, column);
int spannedRow = cs.getSpannedRow();
int spannedColumn = cs.getSpannedColumn();
TableCellRenderer rend = getCellRenderer(spannedRow, spannedColumn);
normalComp = prepareRenderer(rend, spannedRow, spannedColumn);
}
else {
normalComp = super.prepareRenderer(renderer, row, column);
}
Component ret;
if (useSpan) ret = spanDrawer.prepare(normalComp, row, column);
else ret = normalComp;
return ret;
}