2

我正在尝试向我的 JTable 添加不同的数据类型(以使 JTable 以正确的方式对整数列进行排序),同时渲染表以查看奇数行比偶数行更暗。

我的 TableCellRenderer 有以下代码:

public class MyCustomTableCellRenderer extends DefaultTableCellRenderer 
{
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean lected, boolean hasFocus, int row, int column) 
    {
        Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        if (isSelected)
            cell.setBackground( new Color(180,180 ,255) );
        else
            if( row%2 == 0)
                cell.setBackground( new Color(220,220 ,255) );
            else
                cell.setBackground( Color.white );

        return cell;
    }
}

DataModel 代码是这样的:

DefaultTableModel MydataModel = new DefaultTableModel()
{
    @Override
    public boolean isCellEditable(int row, int col)
    {
        return false;
    }

    @Override
    public Class getColumnClass(int c)  
    {
        String colname = getColumnName(c);

        if (colname.contains("INT")) return Integer.class;
        return String.class;
    }
};

我正在使用 new Integer( some_integer ) 向表中添加新的整数值。

运行代码时,表格以正确的方式呈现(奇数行和偶数行具有不同的颜色),但具有整数值的列除外。它们只是白色的,就像它们不受渲染器的影响一样。

请向我解释一下,如何解决这个问题。提前致谢。最大限度。

4

2 回答 2

2

这取决于您如何设置渲染器。使用方法

public void setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer)

传递 Integer 类和您的渲染器。

于 2011-07-20T06:35:46.837 回答
2

通过使用prepareRenderer,您可以消除将表格视图与表格模型同步的问题,int modelRow = convertRowIndexToModel(row);这也将解决您的破碎剥离背景问题。你可以在这里看到一个例子,或者最好的例子是@camickr 的表格行渲染

于 2011-07-20T06:41:24.503 回答