Как я могу изменить цвет фона заголовка JTable? - PullRequest
9 голосов
/ 15 октября 2011

Я пробовал:

table.getTableHeader().setBackground(Color.BLACK);

Не работает.

РЕДАКТИРОВАТЬ: Этот код не работает только в моем проекте.Работает в других проектах.Возможно, я изменил свойство, которое останавливает изменение цвета.Или, может быть, у NetBeans есть какое-то свойство, которое сохраняет цвета по умолчанию.Я заметил кое-что еще.Цвет заголовка в моем проекте сияет по-другому.В примерах, где изменение цвета работает, я вижу другую графику.

РЕДАКТИРОВАТЬ 2: Что-то еще.Я заметил, что кнопки тоже не меняют цвет.Должно быть что-то общее.Надеюсь это поможет.К сожалению, SSCCE не будет работать в этом случае, потому что я не могу воссоздать проблему.Я, конечно, использую правильные названия компонентов.

Ответы [ 5 ]

11 голосов
/ 15 октября 2011

Это работает для меня. Вот мой 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 , чтобы мы могли видеть, что не так.

9 голосов
/ 27 ноября 2014

Попробуйте это ... . Table.getTableHeader () setOpaque (ложь);

затем установите фон jtable header

table.getTableHeader () setBackground (Color.BLACK);.

7 голосов
/ 07 марта 2013

Я рекомендую вам сделать это:

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);
}
3 голосов
/ 16 октября 2011

В заголовке таблицы также используется компонент рендеринга, например, ячейки таблицы.

Посмотрите на это:

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);
  }
});

Если вам не нужен динамический цвет, вы также можете установить цвет в конструкторе средства визуализации.

1 голос
/ 15 октября 2011

Решил это.В NetBeans:

  • Щелкните правой кнопкой мыши имя проекта
  • Свойства
  • Приложение - Настольное приложение
  • Внешний вид: выберите «По умолчанию Java» (не работала с Системой по умолчанию)
  • Не забудьте очистить и перестроить перед запуском проекта

Также графика всего проекта изменила внешний вид.

...