最近做java界面,用JTable,需要编辑里面单个Cell:设置文本,设置颜色(多个,不规则排布的CEll)。
在网上参考了一下代码,实现个方法修改颜色的功能,但都是一修改就修改了一列,或者只能修改某列中的一个,代码如下:
public void setCellColor(JTable table, final int rowID,final int columnID,final Color colorChange){
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
private static final long serialVersionUID = 1L;
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
Component cell = super.getTableCellRendererComponent
(table, value, isSelected, hasFocus, row, column);
if(row==rowID && column==columnID && cell.isBackgroundSet()){
cell.setBackground(colorChange);
}
else
cell.setBackground(Color.white);
return cell;
}
};
table.getColumnModel().getColumn(columnID).setCellRenderer(tcr);
table.repaint();
}
请教实现可以修改任意多个cell背景颜色和文本的方法,有代码最好
谢谢!
------解决方案--------------------
楼主这个不知道想干嘛,TableModel之所以有getColumnClass()方法,是因为Swing的JTable里面一列就是一个类型,就像数据库表一样,一个列不允许出现不同的类型,否则显示的时候会强制将不属于该类型的值转换成该类型,JTable的很多效果正是通过getColumnClass()方法获取到的类来决定的,比如某一列getColumnClass()方法返回的是Boolean.class,就会用JCheckBox来作为该列的编辑器,而JTable的setDefaultRenderer()方法的作用是把所有getColumnClass()获取到的Class为指定Class的列的渲染器设为指定类型,所以从本质上来说,只是设置了列的渲染器而已,并不是单元格的渲染器,所以要达到楼主的“多个,不规则排布的单元格”的效果,依然还是没办法,只能在设置列的渲染器之后,再在渲染器内部的行上面作文章。