質問

これを達成するためのカスタムセルレンダラクラスを作成しました。

public class MatchTableCellRenderer extends DefaultTableCellRenderer{


    public Component getTableCellRendererComponent (JTable table,
                                                    Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
        Component cell;
        cell = super.getTableCellRendererComponent(
                table, obj, isSelected, hasFocus, row, column);
        if( ((String[]) ((MatchTableModel) table.getModel()).getRow(row)).length==7 ){
            System.out.println(((String[]) ((MatchTableModel) table.getModel()).getRow(row))[0]+" "+((String[]) ((MatchTableModel) table.getModel()).getRow(row))[6]);

            cell.setForeground(Color.green);

        }
        return cell;
    }


}
.

と私はこのレンダラをテーブルの列で使用するように設定しました:

    tempColumn = table.getColumnModel().getColumn(0);
    tempColumn.setCellEditor(new MacColumnEditor());
    tempColumn.setCellRenderer(new MatchTableCellRenderer());

    tempColumn = table.getColumnModel().getColumn(1);
    tempColumn.setCellEditor(new IpColumnEditor());
    tempColumn.setCellRenderer(new MatchTableCellRenderer());

    tempColumn = table.getColumnModel().getColumn(2);
    DefaultCellEditor dfEditor=new DefaultCellEditor(new JTextField());
    dfEditor.setClickCountToStart(2);
    tempColumn.setCellEditor(dfEditor);
    tempColumn.setCellRenderer(new MatchTableCellRenderer());
.

length= 7緑の文字列[]を含む行とデフォルトの色の他の行を含んでいます。しかし、私のすべての列が緑色になるのは面白いです。私はあなたが見ることができるように印刷ラインを持っています。それは4回印刷されています(私のテーブルには12行があります)が、すべての行は4ではなく緑色に作られています。

役に立ちましたか?

解決

その理由は、DefaultTableCellEditorの有名なカラーメモリ(TM)です.1つのブランチでのみ、常にの色を設定する必要があります。

if (myCondition) {
   setBackground(...) {
} else {
   setBackground(...) 
} 
.

正確な詳細は最近のスレッド

他のヒント

XxxCellRendererを使用できますが、より良い、最も簡単なprepareRenderer() を使用することです。

正しいコードの場合、Patameters の「他に」が続く場合には、内部に上書きまたはテストする必要があります。

  • ISSELECTED

  • ハスファイス

  • その他回答>>>> CQUESTION

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top