我有一个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());
}
答案 0 :(得分:0)
您需要在YourTableCellRenderer中设置检查。在数据模型返回值之后调用render。所有这些都在绘制组件时发生,因此我不知道此代码在过程中的位置:
if(price>100)
{
table.setDefaultRenderer(Object.class, new YourTableCellRenderer());
}
但是一旦为表格设置了渲染器,那么在更新数据模型时不会发生渲染(我假设代码的作用是什么)。当屏幕被绘制以响应事件(例如焦点获取或以编程方式调用重绘())时会发生这种情况。