1

I can successfully set the background color of the entire JTable header.

generally, this looks like this:

m_table.getTableHeader().setBackground(new Color(205,209,235));

where i am getting stuck is when a cell is selected, I have a ListSelectionListener...

I want to set the background of the currently selected columns in the header to another color. (not the background of the current cell, which Is pretty easy)

update:

i created this:

import java.awt.Color;
import java.awt.Component;

import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;

import com.ee.common.StringUtil;

public class myHeaderRenderer extends DefaultTableCellRenderer 
{
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column)
    {

        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        if( table != null ) 
        {
            if ( isSelected ) {
                table.getTableHeader().setBackground(Color.orange);
            }
            else {
                table.getTableHeader().setBackground(new Color(205,209,235));
            }
        }
        return null;
    }

}

and i try to set it up like this:

class WorksheetTable extends JTable implements EEObjectSource, EEObjectTarget {
    public WorksheetTable(WorksheetTableModel model) {
        super(model);
        setTableHeader(new EditableJTableHeader(getColumnModel()));
    }
    @Override
    public void createDefaultColumnsFromModel() {
        super.createDefaultColumnsFromModel();
        setTableHeader(new EditableJTableHeader(getColumnModel()));
        getTableHeader().setToolTipText("Double Click to Edit, Right Click for more options");
        for (int i=0; i<getColumnCount(); i++) {
            getColumnModel().getColumn(i).setPreferredWidth(150);
            getColumnModel().getColumn(i).setWidth(150);
            getColumnModel().getColumn(i).setHeaderRenderer(new myHeaderRenderer());
        }

i get Runtime null pointers when the table first paints... missing something silly..

Randy
  • 16,480
  • 1
  • 37
  • 55

1 Answers1

2

You can go on a JTable:

 jTable.getColumModel().getColumn(columnIndex).setHeaderRenderer()

And you can supply you own cell renderer to render headers.

Jakub Zaverka
  • 8,816
  • 3
  • 32
  • 48