2011-07-20 10 views
2

異なるデータ型(JTableを適切な方法で並べ替えるために)をJTableに追加しようとしていると同時に、奇数行が偶数行よりも暗く見えるようにテーブルをレンダリングしようとしています。CustomTableCellRendererでのNetbeansの問題

私はTableCellRendererを、次のコードしている:

public class MyCustomTableCellRenderer extends DefaultTableCellRenderer 
{ 
    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean lected, boolean hasFocus, int row, int column) 
    { 
     Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 

     if (isSelected) 
      cell.setBackground(new Color(180,180 ,255)); 
     else 
      if(row%2 == 0) 
       cell.setBackground(new Color(220,220 ,255)); 
      else 
       cell.setBackground(Color.white); 

     return cell; 
    } 
} 

とのDataModelコードは、このようなものです:私は、テーブルに新しい整数(some_integer)を使用して、新しい整数値を追加してい

DefaultTableModel MydataModel = new DefaultTableModel() 
{ 
    @Override 
    public boolean isCellEditable(int row, int col) 
    { 
     return false; 
    } 

    @Override 
    public Class getColumnClass(int c) 
    { 
     String colname = getColumnName(c); 

     if (colname.contains("INT")) return Integer.class; 
     return String.class; 
    } 
}; 

コードを実行するとき、テーブルは整数値を持つ列を除いて、適切な方法で(奇数行と偶数行が異なる色を使用して)レンダリングされます。彼らはレンダラーの影響を受けていないように、ただ白です。

この問題を解決する方法を教えてください。 ありがとうございます。

答えて

2

レンダラーの設定方法によって異なります。 は、Integerクラスとあなたのレンダラを渡す方法

public void setDefaultRenderer(Class<?> columnClass, TableCellRenderer renderer) 

を使用してください。

+0

おお、そうです。ありがとう、それはかなり助けて! – Max

+0

良い提案+1 – mKorbel

2

prepareRendererを使用すると、int modelRow = convertRowIndexToModel(row);を介してテーブルビューとテーブルモデルを同期させる問題を排除することができます。これにより、破損したストリップされた背景の問題も解決します。 hereが表示されているか、またはその最善の例が@ camickrのTable Row Renderingです。

関連する問題