JTable中的颜色渲染器,如果它是不可编辑的字段?

时间:2011-08-23 03:50:05

标签: java swing jtable tablecellrenderer

我在JTable中有3列。一列是可编辑的。其他列不可编辑。可编辑列应显示为绿色,不可编辑列应为红色。我曾尝试使用DefaultRenderer类,但它不起作用。如果有人知道,请帮助我。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。以下 1 会将第1列渲染为灰色。

JTable table = new JTable() {
    public Component prepareRenderer(TableCellRenderer renderer,
                                     int rowIndex, int vColIndex) {
        Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
        if (vColIndex == 0) {//if first column
            c.setBackground(Color.red);
        } else {
            c.setBackground(Color.green);
        }
        return c;
    }
};

或者您可以像 2

那样覆盖DefaultTableCellRenderer
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
    public Component getTableCellRendererComponent (JTable table, Object obj, 
                         boolean isSelected, boolean hasFocus, int row, int column){
        Component cell = super.getTableCellRendererComponent(table, obj, 
                            isSelected, hasFocus, row, column);

        if (column == 0){
            cell.setBackground(Color.red);
        }
        else{
            cell.setBackground(Color.green);
        }
        return cell;
    }
}