我正在尝试添加不同的数据类型(使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;
}
}
数据模型代码是这样的:
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)向表添加新的整数值。
在运行代码时,表以适当的方式呈现(奇数行和偶数行具有不同的颜色),但具有整数值的列除外。它们只是白色的,就像它们没有受到渲染器的影响一样。
请给我解释一下这个问题如何解决。提前感谢。马克斯。
这取决于你如何设置渲染器。使用
方法public void setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer)
传递Integer类和渲染器
通过使用prepareRenderer
,您可以消除通过int modelRow = convertRowIndexToModel(row);
同步表视图和表模型的问题,这也将解决您的问题与破碎的剥离背景。你可以在这里看到一个例子,或者最好的例子是@camickr的表行渲染