我有一个JTable,当输入的值高于某个值时,我想要一个红色的单元格(或其行)。我正在检查它进入TableModelListener以检测TableChange,所以我看不到在渲染器上对表进行着色的方法(但我确信它是可能的,只有我不知道)。
我也看到了this question,但我不知道如何使用它。
答案 0 :(得分:1)
您可以看到prepareRendered
的here作业答案 1 :(得分:0)
以下是针对单个表格单元格,您可以将其扩展为行:
首先获取要制作的表格列,然后按如下方式添加TableCellRenderer
:
TableColumnModel columnModel = myTable.getColumnModel();
TableColumn column = columnModel.getColumn(5); // Give column index here
column.setCellRenderer(new MyTableCellRenderer());
创建实现TableCellRenderer的MyTableCellRendere类并扩展JLabel(以便我们可以为它提供背景颜色)。它看起来像下面这样:
public class MyTableCellRenderer extends JLabel implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int col) {
JLabel jLabel = (JLabel) value;
setBackground(jLabel.getBackground());
setForeground(UIConstants.black);
setText(jLabel.getText());
return this;
}
}
现在,在您正在监听表格单元格值更改的方法中执行以下操作:
JLabel label = new JLabel(changedValue);
// check for some condition
label.setBackground(Color.red); // set color based on some condition
myTable.setValueAt(label, 0, 5); // here 0 is rowNumber and 5 is colIndex that should be same used to get tableColumn before.