特别是一个表头颜色java swing

Ari*_*tra 5 swing

我想更改特定表头的背景颜色.在我的应用中,我必须在当前月份设置标题颜色为红色.在此输入图像描述 我的代码在这里::

     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;
  }
Run Code Online (Sandbox Code Playgroud)

这使得所有标题颜色都是红色的.请给我一些建议.提前致谢.

kle*_*tra 6

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

  • 始终设置背景颜色:即正常状态和突出显示状态
  • 致电超级之前这样做

就像是:

  @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;
  }
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息(以及为什么需要),请参阅如何正确使用自定义渲染器绘制JTable中的特定单元格?