如何更改JTable的标题背景颜色?

Ste*_*gas 9 java swing netbeans jtable jtableheader

我试过了:

table.getTableHeader().setBackground(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)

不行.

编辑:此代码仅在我的项目中不起作用.适用于其他项目.我可能已经更改了一个可以阻止颜色变化的属性.或者NetBeans有一些保留默认颜色的属性.我注意到了别的什么.我项目中标题的颜色以不同的方式闪耀.在颜色变化有效的示例中,我看到了不同的图形.

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

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

如果这对您没有帮助,那么我建议您创建并发布自己的SSCCE,以便我们可以看到错误.


小智 10

试试这个... table.getTableHeader().setOpaque(false);

然后设置jtable标题的背景

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


Soh*_*shi 7

我建议你这样做:

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


Ste*_*gas 1

解决了。在 NetBeans 中:

  • 右键单击项目名称
  • 特性
  • 应用程序 - 桌面应用程序
  • 外观和感觉:选择“Java 默认”(不适用于系统默认)
  • 请记住在运行项目之前清理并重建

整个项目的图形外观也发生了变化。