如何更改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)
- 在运行项目之前,请记住清理并重建
整个项目的图形也改变了外观。