9

我试过了:

table.getTableHeader().setBackground(Color.BLACK);

不工作。

编辑:此代码仅在我的项目中不起作用。在其他项目中工作。我可能更改了阻止颜色更改的属性。或者也许 NetBeans 有一些属性可以保持默认颜色。我注意到了别的东西。我的项目中标题的颜色以不同的方式闪耀。在颜色变化有效的示例中,我看到了不同的图形。

编辑2:别的东西。我注意到按钮也不会改变颜色。必须是通用的东西。希望这可以帮助。不幸的是,SSCCE 在这种情况下不起作用,因为我无法重现问题。我肯定使用了正确的组件名称。

4

7 回答 7

12

试试这个:

table.getTableHeader().setOpaque(false);

然后设置jtable标题的背景

table.getTableHeader().setBackground(Color.BLACK);
于 2014-11-27T09:02:00.267 回答
11

这个对我有用。这是我的SSCCE

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class TableHeaderBackground {
   public static void main(String[] args) {
      Integer[][] data = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
      String[] cols = {"A", "B", "C"};

      JTable table = new JTable(data, cols);

      JTableHeader header = table.getTableHeader();
      header.setBackground(Color.black);
      header.setForeground(Color.yellow);

      JOptionPane.showMessageDialog(null, new JScrollPane(table));
   }
}

如果这对您没有帮助,那么我建议您创建并发布自己的SSCCE,以便我们查看问题所在。

于 2011-10-15T16:15:36.437 回答
8

我建议你这样做:

DefaultTableCellRenderer headerRenderer = new DefaultTableCellRenderer();
headerRenderer.setBackground(new Color(239, 198, 46));

for (int i = 0; i < myJTable.getModel().getColumnCount(); i++) {
        myJTable.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer);
}
于 2013-03-07T19:59:11.127 回答
3

表头还使用渲染器组件,如表格单元格。

看这个:

table.getTableHeader().setDefaultRenderer(new DefaultTableRenderer(){
  {
    // you need to set it to opaque
    setOpaque(true);
  }

@Override
public Component getTableCellRendererComponent(final JTable table,
  final Object value, final boolean isSelected, final boolean hasFocus,
  final int row, final int column) {
    // set the background
    setBackground(yourDesiredColor);
  }
});

如果不需要动态颜色,也可以在渲染器的构造函数中设置颜色。

于 2011-10-16T07:44:16.127 回答
1

解决了。在 NetBeans 中:

  • 右键单击项目名称
  • 特性
  • 应用程序 - 桌面应用程序
  • 外观:选择“Java Default”(不适用于 System Default)
  • 记得在运行项目之前清理和重建

整个项目的图形也改变了外观。

于 2011-10-15T17:52:40.717 回答
0
private void table_head_color(JTable table_name){
    DefaultTableCellRenderer head_render = new DefaultTableCellRenderer(); 
        
    head_render.setBackground(new Color(204,153,255));
    table_name.getTableHeader().setDefaultRenderer(head_render);

    //to call above method
    //table_head_color("write table name");
}
于 2022-01-05T19:21:28.433 回答
-1

这个问题很老,但我有正确的答案,我想......

您所要做的就是将 opaque 设置为true.

例如

yourComponent.setOpaque(true);

我希望这可以帮助将来的人。

于 2020-07-22T05:35:01.647 回答