2012-03-10 3 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()); 
     } 

テーブルが最初にペイントするときにランタイムNULLポインタが表示される...何か愚かなものが見つからない...

答えて

2

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

そして、あなた自身にレンダリングしてヘッダをレンダリングすることができます。

+0

関連する例[here](http://stackoverflow.com/a/7137801/230513)があります。 – trashgod

関連する問題