/**
* Lets you render table data choosing the colours.
*/
package com.mindprod.vercheck;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
/**
* render JTable String column, in a selected font, colours and alignment. Engage with: columnModel.getColumn( col
* ).setCellRenderer( new RainbowRenderer( font, foreground, background, JLabel.CENTER ) )
*/
final class RainbowRenderer extends DefaultTableCellRenderer implements TableCellRenderer
{
private final Color foreground;
private final Font font;
private final int horizontalAlignment;
/**
* constructor
*
* @param font for to render the column
* @param foreground foreground colour
* @param horizontalAlignment e.g. JLabel.CENTER
*/
@SuppressWarnings( { "SameParameterValue" } )
public RainbowRenderer( Font font,
Color foreground,
int horizontalAlignment )
{
this.foreground = foreground;
this.font = font;
this.horizontalAlignment = horizontalAlignment;
}
public Component getTableCellRendererComponent( JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column )
{
JLabel template = ( JLabel ) super.getTableCellRendererComponent( table, value,
isSelected, hasFocus, row, column );
template.setFont( font );
template.setForeground( foreground );
template.setHorizontalAlignment( horizontalAlignment );
if ( value != null )
{
template.setText( value.toString() );
}
else
{
template.setText( null );
}
return template;
}
}