import java.awt.Color;
import java.awt.Component;
import java.text.DateFormat;
import java.util.Date;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class KSKB {
private static int RED = 4; // column index of the red color part
private static int GREEN = 5; // column index of the green color part
private static int BLUE = 6; // column index of the blue color part
private static JTable table;
public static void main(String[] args) {
DefaultTableModel model = new DefaultTableModel(new Object[][] {
{ "Text", 5.123f, true, new Date(System.currentTimeMillis()), 110, 210, 98 },
{ "Text", 4.123f, true, new Date(System.currentTimeMillis()), 110, 200, 200 } },
new String[] { "String", "Float", "Boolean", "Date", "ColorR", "ColorG", "ColorB" }) {
public Class getColumnClass(int columnIndex) {
switch (columnIndex) {
case 0:
return String.class;
case 1:
return Float.class;
case 2:
return String.class;
case 3:
return Date.class;
case 4:
case 5:
case 6:
return Integer.class;
default:
return null;
}
}
};
table = new JTable(model) {
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
if (table.getSelectedRow()==row)
return c;
int rowM = row;
int red = Integer.valueOf(this.getModel().getValueAt(rowM, RED).toString());
int green = Integer.valueOf(this.getModel().getValueAt(rowM, GREEN).toString());
int blue = Integer.valueOf(this.getModel().getValueAt(rowM, BLUE).toString());
c.setBackground(new Color(red, green, blue));
return c;
}
};
table.getSelectedRows();
table.setDefaultRenderer(Object.class, new CellRenderer());
JFrame frame = new JFrame("Demo");
frame.getContentPane().add(new JScrollPane(table));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
class CellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (value instanceof Date)
setText(DateFormat.getDateInstance().format((Date) value));
else if (value instanceof Icon)
setIcon((Icon) value);
else if (value instanceof Boolean) {
if (((Boolean) value).booleanValue())
setText("yes");
else
setText("no");
}
return this;
}
}