package gui.bsvComponents; import java.awt.Color; import java.awt.Component; import javax.swing.BorderFactory; import javax.swing.JTable; import javax.swing.border.Border; import javax.swing.table.DefaultTableCellRenderer; /** * Allows drawing of colored cells in a JTabel. */ public class ColorRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = -4046227263627540722L; /** * Light Border for unselected cells. */ private Border unselectedLightBorder = null; /** * Dark Border for unselected cells. */ private Border unselectedDarkBorder = null; /** * Border for selected cells. */ private Border selectedBorder = null; /** * Constructs a new color renderer. * * @param table * the table that will use the renderer */ public ColorRenderer(JTable table) { setOpaque(true); unselectedDarkBorder = BorderFactory.createMatteBorder(2, 5, 2, 5, Color.LIGHT_GRAY); unselectedLightBorder = BorderFactory.createMatteBorder(2, 5, 2, 5, Color.WHITE); selectedBorder = BorderFactory.createMatteBorder(2, 5, 2, 5, table.getSelectionBackground()); } /** * Returns the component for the colored cell. * * @param table * the table for that the cells are rendered * @param color * the color of the rendered cell * @param isSelected * tells if the cell that will be rendered is selected * @param hasFocus * tells if the cell that will be rendered has focus * @param row * tells which row the cell is in * @param column * tells which column the cell is in * * @return the rendered cell as component */ @Override public Component getTableCellRendererComponent(JTable table, Object color, boolean isSelected, boolean hasFocus, int row, int column) { setBackground((Color) color); if (isSelected) { setBorder(selectedBorder); } else { if ((row % 2) == 0) { setBorder(unselectedDarkBorder); } else { setBorder(unselectedLightBorder); } } return this; } }