特别是一个表头颜色java swing

时间:2012-03-23 10:56:00

标签: swing

我想更改特定表标题的背景颜色。在我的应用中,我必须在当前月份设置标题颜色为红色。 enter image description here 我的代码在这里::

     jTable1.getTableHeader().
    setDefaultRenderer(
    new DefaultTableHeaderCellRenderer());



  @Override
  public Component getTableCellRendererComponent(JTable table, Object value,
          boolean isSelected, boolean hasFocus, int row, int column) {
    super.getTableCellRendererComponent(table, value,
            isSelected, hasFocus, row, column);
    JTableHeader tableHeader = table.getTableHeader();

    if(column==1)
    tableHeader.setBackground(Color.red);


    return this;
  }

这会使所有标题颜色变为红色。 请给我一些建议。 提前谢谢。

1 个答案:

答案 0 :(得分:6)

DefaultTableCellRenderer的臭名昭着的颜色记忆:-)你必须

  • 始终设置背景颜色:正常状态和突出显示状态
  • 在调用super
  • 之前执行

类似的东西:

  @Override
  public Component getTableCellRendererComponent(JTable table,
        Object value, boolean isSelected, boolean hasFocus, int row,
        int column) {
      if (myHighlightCondition) {
          setBackground(Color.RED);
      } else {
          setBackground(null);
      }
     super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
           row, column);
     return this;
  }

有关详情(以及为何需要),请参阅How do I correctly use custom renderers to paint specific cells in a JTable?