我想制作一个可编辑的表,然后检查数据以确保其有效.我不知道如何改变一个细胞的颜色.我想获得一个单元格,例如(0,0)并将前景颜色设置为红色.我已经阅读了SO以及Oracle关于自定义ColorRenderer的其他帖子,但我只是不知道如何使用它.
谢谢.
可能重复:
更改Swing JTable单元格颜色
我开发了一个显示JTable的swing应用程序.我希望当用户修改单元格值时,单元格修改了更改颜色.
这是我在用户修改单元格时运行的代码:
this.myTable.getColumnModel().getColumn(column).setCellRenderer(new StatusColumnCellRenderer());
Run Code Online (Sandbox Code Playgroud)
这是我的单元格Render类的代码:
public class StatusColumnCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
//Cells are by default rendered as a JLabel.
JLabel l = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
//Get the status for the current row.
TableModelLotti tableModel = (TableModelLotti) table.getModel();
if(isSelected)
l.setBackground(Color.GREEN);
//Return the JLabel which renders the cell.
return l;
}
}
Run Code Online (Sandbox Code Playgroud) 我只获得了最后一行彩色..
class CustomTableCellRenderer extends DefaultTableCellRenderer {
private Map<Integer, Color> mapColors;
public CustomTableCellRenderer() {
mapColors = new HashMap<>();
}
public void setRowColor(int row, Color color) {
// System.out.println(row + "...happy...." + color);
mapColors.put(row, color);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(table, obj, isSelected, hasFocus, row, 1);
Color color = mapColors.get(row);
if (color != null) {
cell.setBackground(color);
} else {
cell.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
}
row++;
return …Run Code Online (Sandbox Code Playgroud)