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

我试过了:

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

不起作用。

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

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

这个对我有用。 这是我的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,以便我们可以看到错误。

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

然后设置jtable标题的背景

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

我建议你这样做:

 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); } 

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

看这个:

 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); } }); 

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

解决了它。 在NetBeans中:

  • 右键单击项目名称
  • 属性
  • 应用 – 桌面应用
  • 外观:选择’Java Default’(不适用于System Default)
  • 在运行项目之前,请记住清理并重建

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