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

voase2hg  于 2022-11-10  发布在  其他
关注(0)|答案(7)|浏览(177)

我试过了:

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

不起作用。
编辑:这段代码不仅在我的项目中有效,在其他项目中也有效。我可能修改了一个属性,阻止了颜色的变化。或者NetBeans有一些属性,保留了默认颜色。我还注意到了一些其他的东西。我的项目中标题的颜色以不同的方式闪烁。在颜色变化有效的示例中,我看到了不同的图形。
编辑2:其他的东西。我注意到按钮也不会改变颜色。一定是一些通用的东西。希望这能有所帮助。不幸的是SSCCE在这种情况下不起作用,因为我不能重现这个问题。我肯定使用了正确的组件名称。

41zrol4v

41zrol4v1#

试试看:

table.getTableHeader().setOpaque(false);

然后设置jtable头的背景

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

yqyhoc1h2#

这对我很有效。这是我的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,这样我们就可以看到哪里出了问题。

vfh0ocws

vfh0ocws3#

我建议您这样做:

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

jvlzgdj94#

表格标题也使用渲染器组件,如表格单元格。
你看这个:

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

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

kyvafyod

kyvafyod5#

在NetBeans中:

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

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

aelbi1ox

aelbi1ox6#

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

ugmeyewa7#

这个问题很老了,但我有正确的答案,我想...
您所要做的就是将opaque设置为true
例如:

yourComponent.setOpaque(true);

我希望这能在将来对某人有所帮助。

相关问题