我试过了:
table.getTableHeader().setBackground(Color.BLACK);
不起作用。
编辑:此代码仅在我的项目中不起作用。适用于其他项目。我可能已经更改了一个可以阻止颜色变化的属性。或者NetBeans有一些保留默认颜色的属性。我注意到了别的什么。我项目中标题的颜色以不同的方式闪耀。在颜色变化有效的示例中,我看到了不同的图形。
编辑2:别的。我注意到按钮也不会改变颜色。必须是通用的东西。希望这可以帮助。不幸的是,SSCCE在这种情况下无法工作,因为我无法重现问题。我肯定会使用正确的组件名称。
答案 0 :(得分: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,以便我们可以看到错误。
答案 1 :(得分:9)
试试这个...... 。table.getTableHeader()setOpaque(假);
然后设置jtable标题的背景
table.getTableHeader()的setBackground(Color.BLACK);
答案 2 :(得分: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);
}
答案 3 :(得分: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);
}
});
如果您不需要动态颜色,还可以在渲染器的构造函数中设置颜色。
答案 4 :(得分:1)
解决了它。 在NetBeans中:
整个项目的图形也改变了外观。
答案 5 :(得分:-1)
这个问题很老,但是我想我的答案是正确的。
您要做的所有事情都是将不透明设置为true
。
例如
yourComponent.setOpaque(true);
我希望这可以在将来对某人有所帮助。