Изменение цвета шрифта и фона jTableHeader

Я пытаюсь изменить цвет фона и размер шрифта 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);

Я не понимаю, почему он меняет только фон. Надеюсь, вы можете помочь.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
276
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добиться этого, используя 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);
  }
}

Выход:

он отлично работает, если я создаю новую таблицу, но когда я пытаюсь применить изменения к существующей, созданной с использованием палитры netbeans, это не работает. И, кстати, даже если я использую DefaultTableCellRenderer, он должен применять как цвет фона, так и новый шрифт, верно?

Varejator 12.03.2019 17:36

@Varejator, после создания пользовательского интерфейса с помощью конструктора пользовательского интерфейса вы все равно можете вносить эти изменения в сгенерированный код Java. Да, я также ожидал, что подход с рендерингом ячеек тоже сработает. Но там происходит что-то неожиданное.

Prasad Karunagoda 12.03.2019 18:21

Другие вопросы по теме