我想实现一个JTable组件的tablecellrenderer,它应该根据单元格数据显示不同的颜色。我得到了这个,但我不能改变所选单元格的颜色。我试着这样做:
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex)
{
if (isSelected) {
this.setBackground((Color)UIManager.get("Table.selectionBackground"));
this.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
} else {
this.setForeground((Color)UIManager.get("Table.foreground"));
this.setBackground((Color)UIManager.get("Table.background"));
this.setBorder(BorderFactory.createEmptyBorder());
}
...
}
但它不起作用:S ..我看不到问题,因为当我点击一个单元格时,JTable没有显示任何不同。
答案 0 :(得分:2)
我想实现一个JTable组件的tablecellrenderer,它应该根据单元格数据显示不同的颜色
您发布的代码不会这样做。基本上所有代码都会复制渲染器的默认行为
您可能会发现Table Row Rendering方法更易于实施。
答案 1 :(得分:0)
假设您使用JLabel作为组件的基础,除非您还将opaque设置为true,否则设置背景将无效。 JLabels默认不透明,因此不要绘制背景。