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;

}