Object[][] data = {{"1", "#0000ff"}, {"2", "#00ff00"}, {"3", "#ff0000"}}
String[] head = {"No.", "Color"}
JTable table = new JTable(data, head)
table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Color color = Color.decode((String)table.getValueAt(row, 1))
Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column)
comp.setBackground(color)
return comp
}
})
这是我以前做的:
public Component getTableCellRendererComponent(JTable table,Object value,
boolean isSelected,boolean hasFocus,int row,int column)
{
//如果是图标,就要显示图标,否则就显示文本
if(value instanceof Icon)
this.setIcon((Icon)value)
else
this.setText(value.toString())
//如果被选中
if(isSelected)
//设置选定单元格的背景色。单元格渲染器可以使用此颜色填充选定单元格。
//返回选定单元格的背景色。
super.setBackground(table.getSelectionBackground())
else
this.setBackground(table.getBackground())
//设置居中
this.setHorizontalAlignment(JLabel.CENTER)
this.setToolTipText(value.toString())
return this
}
ps.要在JTable中添加这个渲染器。
样式:
附:自己多查API
javax.swing.table.TableCellRenderer
此接口定义了要成为 JTable 中单元格渲染器的任意对象所需的方法
getTableCellRendererComponentComponentgetTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column)返回用于绘制单元格的组件。此方法用于在绘制前适当地配置渲染器。
TableCellRenderer 还负责呈现表示该表当前 DnD 放置位置的单元格(如果有)。如果此呈现器负责呈现 DnD 放置位置,则它应该直接查询表以确定给定的行和列是否表示放置位置:
JTable.DropLocation dropLocation = table.getDropLocation()if (dropLocation != null
&& !dropLocation.isInsertRow()
&& !dropLocation.isInsertColumn()
&& dropLocation.getRow() == row
&& dropLocation.getColumn() == column) {
// this cell represents the current drop location
// so render it specially, perhaps with a different color
}
在打印 *** 作期间,将调用此方法(isSelected 和 hasFocus 为
false)阻止选择和焦点在打印输出中出现。要根据是否打印表进行其他定制,检查 JComponent.isPaintingForPrint()
的返回值。
参数:table - 要求渲染器绘制的 JTable;可以为 nullvalue - 要呈现的单元格的值。由具体的渲染器解释和绘制该值。例如,如果 value 是字符串
"true",则它可呈现为字符串,或者也可呈现为已选中的复选框。null 是有效值
isSelected - 如果使用选中样式的高亮显示来呈现该单元格,则为 true;否则为 false
hasFocus - 如果为
true,则适当地呈现单元格。例如,在单元格上放入特殊的边框,如果可以编辑该单元格,则以彩色呈现它,用于指示正在进行编辑
row - 要绘制的单元格的行索引。绘制头时,row 值是 -1
column - 要绘制的单元格的列索引
javax.swing.JTable#getColumn
public TableColumn getColumn(Object identifier)返回表中列的 TableColumn 对象,当使用 equals 进行比较时,表的标识符等于
identifier。
javax.swing.table.TableColumn#setCellRenderer
public void setCellRenderer(TableCellRenderer cellRenderer)
设置JTable指定单元格的颜色重载的TableModel里的getValueAt(int,int)方法改了一下:
/**取得指定位置的值*/
public Object getValueAt(int rowIndex, int columnIndex) {
return "<html><font color=red>"+rowIndex*columnIndex+"</font></html>"
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)