这个问题与previous post 非常相似我的。 我需要自定义 JTable 的某些单元格,使它们看起来像表头单元格。 我正在使用 Nimbus 的外观,并且正在尝试检索 JTable 编辑器的颜色:
public class HeaderCellRenderer extends JLabel implements TableCellRenderer{
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
System.out.println("OK");
this.setOpaque(true);
setBackground(UIManager.getColor("TableHeader.background"));
return this;
}
}
我关注这个post获取要提供给 getColor 方法的名称(“TableHeader.background”)。 不管我从现在开始做了什么,返回的颜色与我表格的标题单元格不一样。
你有什么想法吗?
编辑:
我注意到应该是渐变而不是颜色,但我找不到正确的键来使用。我看了this list .
最佳答案
典型外观的默认表头外观由 sun.swing.table.DefaultTableCellHeaderRenderer
的实例提供.您可以通过以下方式获取副本:
class HeaderRenderer implements TableCellRenderer {
TableCellRenderer renderer;
public HeaderRenderer(JTable table) {
renderer = table.getTableHeader().getDefaultRenderer();
}
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int col) {
return renderer.getTableCellRendererComponent(
table, value, isSelected, hasFocus, row, col);
}
}
您可以按照给定列的 type token 的常规方式安装它:
table.setDefaultRenderer(SomeObject.class, new HeaderRenderer(table));
关于swing - 使用表格单元格标题颜色自定义 jtable 单元格渲染器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6644739/