如何在JTable中更改已编辑单元格的背景颜色?

use*_*697 2 java swing background jtable cell

我到处搜索,但我似乎无法找到我的问题的答案.我已经阅读了关于单元格渲染器和单元格编辑器的所有内容但仍然不知道...我有一个JTable,我想确保用户清楚地看到他们正在编辑哪个单元格.默认情况下,JTable中编辑过的单元格边框较暗,但我想将背景设为绿色.我可以在选择时将其设为绿色,但是一旦我开始输入数据,绿色背景就会消失,我正在写入白色单元格.

你能帮我找到一种方法,即使在输入数据时也能保持单元格的背景绿色吗?

tra*_*god 5

首先,获取表的默认选择背景颜色:

Color color = UIManager.getColor("Table.selectionBackground");
Run Code Online (Sandbox Code Playgroud)

其次,覆盖prepareEditor(),如本所示,并设置编辑器组件的背景颜色以匹配:

@Override
public Component prepareEditor(TableCellEditor editor, int row, int col) {
    Component c = super.prepareEditor(editor, row, col);
    c.setBackground(color);
    return c;
}
Run Code Online (Sandbox Code Playgroud)

附录:虽然技术上正确,但请注意编辑器组件的颜色通常由相应的UI委托在激活时进行管理.不幸的选择可能会导致对比度差和可用性受损.有必要对目标外观和感觉进行彻底测试.