2

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

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 コードは次のようになります。

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

new Integer( some_integer ) を使用して新しい整数値をテーブルに追加しています。

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

この問題を解決する方法を教えてください。前もって感謝します。最大。

4

2 に答える 2

2

を使用prepareRendererすることで、テーブルビューをテーブルモデルと同期する問題を解消できます。これによりint modelRow = convertRowIndexToModel(row);、背景が剥がれた問題も解決されます。ここに表示される例があります。または、@camickrのテーブル行レンダリングが最も良い例です。

于 2011-07-20T06:41:24.503 に答える
2

レンダラーの設定次第です。メソッドを使用する

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

Integer クラスとレンダラーを渡します。

于 2011-07-20T06:35:46.837 に答える