Color Renderer в JTable, если это не редактируемое поле? - PullRequest
0 голосов
/ 23 августа 2011

У меня есть 3 столбца в JTable. Один столбец редактируемый. Другие столбцы недоступны для редактирования. Редактируемый столбец должен отображаться зеленым цветом, а нередактируемый столбец должен быть красного цвета. Я пробовал с DefaultRenderer классом, но он не работает. Пожалуйста, если кто-нибудь знает это, помогите мне.

1 Ответ

2 голосов
/ 23 августа 2011

Ну, есть несколько способов сделать это. После 1 столбец 1 будет отображаться серым цветом.

JTable table = new JTable() {
    public Component prepareRenderer(TableCellRenderer renderer,
                                     int rowIndex, int vColIndex) {
        Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
        if (vColIndex == 0) {//if first column
            c.setBackground(Color.red);
        } else {
            c.setBackground(Color.green);
        }
        return c;
    }
};

Или вы можете переопределить класс DefaultTableCellRenderer, например, следующим образом 2

public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
    public Component getTableCellRendererComponent (JTable table, Object obj, 
                         boolean isSelected, boolean hasFocus, int row, int column){
        Component cell = super.getTableCellRendererComponent(table, obj, 
                            isSelected, hasFocus, row, column);

        if (column == 0){
            cell.setBackground(Color.red);
        }
        else{
            cell.setBackground(Color.green);
        }
        return cell;
    }
}
...