2015-08-02 8 views
1

Я пытаюсь изменить фон JTable в графическом интерфейсе на основе swing. Я добавил таблицу к JScrollPane. Однако область таблицы, где нет ячеек, не меняет цвет. Я попытался изменить цвет фона и переднего плана панели прокрутки. Однако это тоже не помогает. Какой компонент JTable мне нужно изменить, чтобы изменить белый фон. Ниже приведена часть моего кода.Изменить цвет фона JTable

public class UiColors { 
    public static Color BACKGROUND_COLOR_DARK = new Color(30,30,30); 
    public static Color BACKGROUND_COLOR_LIGHT = new Color(70,70,70); 
    public static Color GOLDEN_TEXT = new Color(255, 215, 0); 
} 

Код для JTable

JScrollPane mdScrolPane = new JScrollPane(); 
mdScrolPane.setBackground(UiColors.BACKGROUND_COLOR_DARK); 
mdScrolPane.setOpaque(false); 
mdScrolPane.setForeground(UiColors.BACKGROUND_COLOR_DARK); 
contentPane.add(mdScrolPane, "cell 1 0 1 5,grow"); 

mdTableModel = new ReadOnlyTableModel(); 

for (String col : columnNames) { 
    mdTableModel.addColumn(col); 
} 

marketDataTable = new JTable(mdTableModel); 
marketDataTable.setFillsViewportHeight(true); 
marketDataTable.setToolTipText("Quotes"); 
marketDataTable.setBorder(null); 
marketDataTable.setForeground(new Color(255, 215, 0)); 
marketDataTable.setBackground(UiColors.BACKGROUND_COLOR_DARK); 
marketDataTable.setOpaque(false); 
mdScrolPane.setColumnHeaderView(marketDataTable); 
mdScrolPane.setViewportView(marketDataTable); 

enter image description here

ответ

2

Попробуйте эту линию, что работа для меня:

mdScrolPane.getViewport().setBackground(UiColors.BACKGROUND_COLOR_DARK); 

И попробуйте заменить следующий код перед JscrollPanel`` декларации :

Заменить следующую позицию кода:

mdTableModel = new ReadOnlyTableModel(); 

for (String col : columnNames) { 
    mdTableModel.addColumn(col); 
} 

marketDataTable = new JTable(mdTableModel); 
marketDataTable.setFillsViewportHeight(true); 
marketDataTable.setToolTipText("Quotes"); 
marketDataTable.setBorder(null); 
marketDataTable.setForeground(new Color(255, 215, 0)); 
marketDataTable.setBackground(UiColors.BACKGROUND_COLOR_DARK); 
marketDataTable.setOpaque(false); 

Чтобы быть Befor:

JScrollPane mdScrolPane = new JScrollPane(); 
+1

Отлично! Большое спасибо. Я знал, что это просто компонент, который мне не хватает. –

Смежные вопросы