Jtable突出显示与defaultablecellrenderer

时间:2014-07-28 21:53:56

标签: java swing jtable tablecellrenderer

我有一个java程序,可以将行添加到jtable中。当我添加一行时,它会对该行进行价格检查,如果它大于100,则在添加后立即突出显示绿色。这是我目前的代码,它所做的只是突出显示所有绿色。我的问题是什么?

class YourTableCellRenderer
    extends DefaultTableCellRenderer {
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    Component c = 
    super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

if (row == table.getRowCount()-1) {
            c.setBackground(Color.GREEN);
    }
    return c;
}
}

model.addRow(new Object[] {"col1", "col2"});

if(price>100)
{
    table.setDefaultRenderer(Object.class, new YourTableCellRenderer());
}

1 个答案:

答案 0 :(得分:0)

您需要在YourTableCellRenderer中设置检查。在数据模型返回值之后调用render。所有这些都在绘制组件时发生,因此我不知道此代码在过程中的位置:

if(price>100)
{
    table.setDefaultRenderer(Object.class, new YourTableCellRenderer());
}

但是一旦为表格设置了渲染器,那么在更新数据模型时不会发生渲染(我假设代码的作用是什么)。当屏幕被绘制以响应事件(例如焦点获取或以编程方式调用重绘())时会发生这种情况。