Как вызвать DefaulCelleRenderer из CustomCellRenderer для определенной ячейки JTable - PullRequest
0 голосов
/ 13 июня 2010

У меня есть класс с логическим полем.Я отображаю в JTable список этих классов.Я создал CustomCellRenderer, чтобы изменить цвет фона строк, поэтому у меня могут быть разные цвета.

проблема: при применении customrenderer к логическому полю (true / false) отображается вместо значения по умолчаниюфлажок рендерера.

как мне использовать обе функции: цвета фона и флажок?

вот код нестандартного приемника:

public class CustomCellRenderer 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 (isSelected) {
            cell.setBackground(Color.red);
        } else {
            if (row % 2 == 0) {
                cell.setBackground(new Color(110,134,214));

            } else {
                cell.setBackground(Color.lightGray);

            }
        }
        return cell;
    }
}

Заранее благодарен за любую помощь.

1 Ответ

0 голосов
/ 15 июня 2010

Я понял.

Я нашел это:

добавить флажок только к одной ячейке в JTable

Я использовал BooleanRenderer, который я вызвал из метода getTableCellRendererComponent CustomCellRenderer.

Я только что добавил в этот метод строку делегирования рендеринга:

public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        //delegate if boolean
        if(value instanceof Boolean) return booleanRenderer.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
        if (isSelected) {
            setBackground(selectedColor);
            setForeground(unSelectedColorWhite);
        } else {
            if (row % 2 == 0) {
                setBackground(unSelectedColorBlue);
            } else {
                setBackground(unSelectedColorWhite);
            }
            setForeground(selectedColor);
        }
        setText(" " + table.getValueAt(row, column)); 
        selected = isSelected;

        return this;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...