Я пытаюсь изменить цвет фона и размер шрифта jTableHeader, но он меняет только цвет фона. Вот код:
DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setBackground(new Color(239,198,46));
centerRenderer.setHorizontalAlignment(JLabel.CENTER);
centerRenderer.setFont(new Font("Times New Roman", Font.BOLD, 12));
jTable1.getTableHeader().setDefaultRenderer(centerRenderer);
Я не понимаю, почему он меняет только фон. Надеюсь, вы можете помочь.




Вы можете добиться этого, используя table.getTableHeader().setBackground() и table.getTableHeader().setFont() напрямую, вместо того, чтобы пытаться изменить средство рендеринга заголовка. Попробуйте этот пример:
import javax.swing.*;
import java.awt.*;
public class TableHeaderFont
{
public static void main(String[] args)
{
JTable table = new JTable(new String[][] {{"11", "22"}, {"33", "44"}}, new String[] {"ABC", "DEF"});
table.getTableHeader().setBackground(new Color(239,198,46));
table.getTableHeader().setFont(new Font("Times New Roman", Font.BOLD, 12));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
}
}
Выход:
@Varejator, после создания пользовательского интерфейса с помощью конструктора пользовательского интерфейса вы все равно можете вносить эти изменения в сгенерированный код Java. Да, я также ожидал, что подход с рендерингом ячеек тоже сработает. Но там происходит что-то неожиданное.
он отлично работает, если я создаю новую таблицу, но когда я пытаюсь применить изменения к существующей, созданной с использованием палитры netbeans, это не работает. И, кстати, даже если я использую DefaultTableCellRenderer, он должен применять как цвет фона, так и новый шрифт, верно?