if (rowCount * rowHeight < currentHeightOfAllRows) {
int inset = 4;
float dash1[] = {4.0f};
BasicStroke dashed = new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f);
TableColumnModel colModel = this.getColumnModel();
ArrayFieldModel model = (ArrayFieldModel)getModel();
Stroke defaultStroke = ((Graphics2D)g).getStroke();
for (int row = rowCount; row <= currentHeightOfAllRows/rowHeight; row++) {
int xPos = 0; // PM this needs to be zero because the line does not repaint correctly
for (int col = 0; col < colModel.getColumnCount(); col++) {
ArrayColumn column = (ArrayColumn)this.getColumnModel().getColumn(col);
Color backgroundColour = this.getBackground();
// Rectangle place holders
g.setColor(backgroundColour);
g.fillRect(xPos, row*rowHeight, column.getWidth(), rowHeight);
// Details in rectangle place holders
if (this.paintEmptyRowRectangles && rowHeight > inset*2 && column.getWidth() > inset*2) {
// If we can append a row, we are on the last row, and this column is editable
if (this.isAllowsAppendAndEditable() && row == rowCount && model.isColumnEditable(col)) {
TableCellRenderer renderer = ((ArrayFieldCellRenderer)column.getCellRenderer()).getRenderer();
// The renderer supports painting in an empty row. CraigM:20/01/2009.
if (renderer instanceof ArrayFieldEmptyCellRenderer) {
// Paint an editable row (not faded)