2012-03-10 78 views
1

我可以成功设置整个JTable标题的背景颜色。如何在选中单元格时设置JTable标题背景颜色

一般,这看起来是这样的:

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

我在哪里卡住是当选择一个单元格,我有一个ListSelectionListener ...

我想设置的的背景当前在标题中选中的列为另一种颜色。 (不是当前单元格的背景,这是很容易的)

更新:

我创造了这个:

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

} 

我尝试设置它像这样:

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

我得到运行时空指针时,表第一次绘制...缺少一些愚蠢的东西..

回答

2

您可以继续使用JTable:

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

而且您可以提供自己的单元格渲染器来渲染标题。

+0

有一个相关示例[here](http://stackoverflow.com/a/7137801/230513)。 – trashgod 2012-03-10 14:49:31

相关问题