我试过了:
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);
我希望这对将来的人有帮助。