private void drawOneColumn(Graphics2D g2d, Column column, Rectangle bounds) {
		Shape oldClip = g2d.getClip();
		Color divColor = getDividerColor();
		int last = getLastRowToDisplay();
		int y = bounds.y;
		int maxY = bounds.y + bounds.height;

		if (mHeaderPanel != null) {
			bounds.height = mHeaderPanel.getHeight();
			g2d.setColor(mHeaderPanel.getBackground());
			g2d.fill(bounds);
			column.drawHeaderCell(this, g2d, bounds);
			bounds.y += mHeaderPanel.getHeight();
			g2d.setColor(divColor);
			g2d.drawLine(bounds.x, bounds.y, bounds.x + bounds.width, bounds.y);
			bounds.y++;
		}

		for (int i = getFirstRowToDisplay(); i <= last; i++) {
			Row row = mModel.getRowAtIndex(i);
			if (!mModel.isRowFiltered(row)) {
				bounds.height = row.getHeight();
				if (maxY < bounds.y) {
					break;
				}
				if (y <= bounds.y) {
					g2d.setClip(bounds);
					g2d.setColor(getBackground(i, false, true));
					g2d.fill(bounds);
					column.drawRowCell(this, g2d, bounds, row, false, true);
					g2d.setClip(oldClip);
					if (mDrawRowDividers) {
						g2d.setColor(divColor);
						g2d.drawLine(bounds.x, bounds.y + bounds.height, bounds.x + bounds.width, bounds.y + bounds.height);
					}
				}
				bounds.y += bounds.height + (mDrawRowDividers ? 1 : 0);
			}
		}
	}