2012-03-02 63 views
2

我到处搜索,但我仍然无法找到我的问题的答案。我已经阅读了关于单元格渲染器和单元格编辑器的所有内容,但仍然不知道......我有一个JTable,并且我想确保用户清楚地看到他们正在编辑哪个单元格。默认情况下,JTable中编辑的单元格会变暗,但我想使背景变成绿色。选中时我可以使它变成绿色,但只要我开始输入数据,绿色背景消失,我正在写入一个白色的单元格。如何更改JTable中编辑的单元格的背景颜色?

能否请你帮我找到一种方法来保持甚至在输入数据的绿色细胞的背景是什么?

+1

为什么你想要一个比默认更强大的视觉线索? @trashgod发布了一个技术上正确的答案(假设编辑组件是不透明的),但是你想要达到什么目的? – kleopatra 2012-03-03 00:27:18

+0

这是我老板要我做的事情 - 以前的程序是这样工作的,他们希望这样保持,因为用户习惯了。所以只是用户的习惯。 – user1245697 2012-03-03 18:55:55

回答

5

首先,得到表的默认选择背景色:

Color color = UIManager.getColor("Table.selectionBackground"); 

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

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

附录:尽管技术上正确,但请注意,编辑器组件的颜色通常由处于活动状态的相应UI委托进行管理。不幸的选择可能会导致对比度差和可用性受损。在目标上进行彻底测试Look &感觉是有保证的。

+0

很好的答案+1 – mKorbel 2012-03-02 20:43:53

+0

@mKorbel:谢谢;我在上面添加了一条警告,我很乐意提供任何想法。 – trashgod 2012-03-02 22:15:37

+0

谢谢,作品很棒:) – user1245697 2012-03-03 18:50:20

相关问题