JTable раскраска конкретной линии сетки в Java - PullRequest
1 голос
/ 23 февраля 2012

У меня есть таблица 8x8, и я хочу закрасить сетку первой и второй ячейки в самой верхней части таблицы красным.У меня вопрос возможно ли это сделать?

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

Поскольку вы хотите воздействовать только на определенные ячейки, основываясь на местоположении, а не на типе, переопределите prepareRenderer() и верните компонент, имеющий красный Border для нужных ячеек. См. Также Как использовать таблицы .

3 голосов
/ 23 февраля 2012

РЕДАКТИРОВАТЬ : я удалил это, потому что я думал, что это не то, что хотел ОП.Я удаляю его по запросу ОП.

У меня есть таблица 8x8, и я хочу закрасить сетку первой и второй ячейки в самой верхней части таблицы красным,Мой вопрос: возможно ли это сделать?

Да, конечно.

Один из способов сделать это - расширить существующий рендер и переопределить getTableCellRendererComponent method.

Например:

public class GridlineCellRenderer extends DefaultTableCellRenderer {

    @Override
    public Component getTableCellRendererComponent (
        JTable table,
        Object value,
        boolean isSelected,
        boolean hasFocus,
        int row,
        int column
    ) {
        final Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        if ( row == 0 && (column == 0 || column ==1 ) {
            cell.setBackground( Color.RED );
        }
        return cell;
    }
}

Затем вам нужно предупредить JTable, что вы хотите использовать этот рендерер для определенных типов данных.

Например, если выЕсли вы хотите использовать это для ячеек, содержащих Integer, должно работать следующее:

JTable myJTable = ...
myJTable.setDefaultRenderer(Integer.class, new GridlineCellRenderer() );
...