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



我试过了:

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

行不通。

编辑:这段代码只在我的项目中不起作用。在其他项目中工作。我可能改变了一个属性阻止颜色改变。或者NetBeans有一些保留默认颜色的属性。我还注意到了别的事情。在我的项目中,头部的颜色以不同的方式闪耀。在颜色改变起作用的例子中,我看到了不同的图形。

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

试试这个:

table.getTableHeader().setOpaque(false);

然后设置jtable header的背景

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

适合我。这是我的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,以便我们可以看到哪里出了问题。

我建议你这样做:

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默认'(不与系统默认工作)
  • 记得在运行项目前清理和重建

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

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

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

你所要做的就是将不透明设置为true

yourComponent.setOpaque(true);

我希望这对将来的人有帮助。

相关内容

  • 没有找到相关文章

最新更新