I'm trying to change the font of the headers in my JTable but the setFont method isn't working. I tried using the setFont on the renderer but that didn't work. I tried using UIDefaults but that didnt work either. I tried calling setFont on the JTableHeader object but that also didn't work.
This is the result of the code
headerModel.setColumnIdentifiers(headers);
JTable prodTable = new JTable(headerModel) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
prodTable.setShowGrid(false);
prodTable.setRowHeight(50);
prodTable.setFillsViewportHeight(true);
prodTable.setBorder(null);
//UIDefaults defaults = UIManager.getLookAndFeelDefaults();
//defaults.put("TableHeader.font", new Font("SansSerif",Font.BOLD,50));
prodTable.setDefaultRenderer(Object.class, new DefaultTableCellRenderer() {// alternate background color for rows
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (!isSelected)
c.setBackground(row % 2 == 0 ? Color.decode("#E5EBF4") : Color.decode("#ECF3FA"));
return c;
};
});
final DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setBorder(null);
renderer.setBackground(Color.decode("#ECF3FA"));
renderer.setHorizontalAlignment(JLabel.CENTER);
renderer.setForeground(Color.decode("#707070"));
//renderer.setFont(new Font("SansSerif",Font.BOLD,50));
renderer.setPreferredSize(new Dimension(100,50));
JTableHeader jTableHeader = prodTable.getTableHeader();
jTableHeader.setFont(new Font("SansSerif",Font.BOLD,50));
jTableHeader.setDefaultRenderer(renderer);
final TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(headerModel);
prodTable.setRowSorter(sorter);
JScrollPane tableScroll = new JScrollPane(prodTable){
@Override
public Dimension getPreferredSize() {
return new Dimension(100, 100);
}
};