Цвет ячеек в столбце в JTable - PullRequest
2 голосов
/ 03 марта 2012

В настоящее время у меня есть JTable, состоящий из 7 столбцов и множества строк данных.

Как бы я покрасил каждую ячейку в 7-м столбце? Я хочу раскрасить по данным внутри клетки.

Так что, если одна из ячеек в 7-м столбце была, скажем, ниже 0, то я хочу закрасить красным или, если одна из ячеек в 7-м столбце была больше 0, тогда зеленый и т. Д.

Спасибо

Ответы [ 2 ]

4 голосов
/ 03 марта 2012

Вы можете использовать TableCellRenderer для создания этих пользовательских стилей для отдельных ячеек в таблице. Этот учебник объясняет в некоторых деталях. На этой странице приведен пример, в котором используется средство визуализации цвета, которое может быть началом, которое вам нужно.

2 голосов
/ 03 марта 2012

Переопределить prepareRenderer() метод, когда вы инициализируете свой табличный объект, поместите ваши конкретные условия, чтобы соответственно изменить цвета, тогда изменения цвета будут отражены в вашем приложении, как вы определили. Предположим, у вас есть глобальная переменная JTable table, и пусть model будет вашим экземпляром DefaultTableModel:

table = new JTable( model )
{
    public Component prepareRenderer ( TableCellRenderer r, int row, int col )
    {
        Component comp = super.prepareRenderer( r, row, col );
        if ( col == 6 && !isCellSelected( row, col ) )
        {
            if ( table.getValueAt( row, col ) < 0 )
                comp.setBackground( Color.RED );
            else
               comp.setBackground( Color.GREEN );
        }  
        return comp;
    }
};

Приведенный выше код проверяет col == 6, потому что вы хотите раскрасить 7-й столбец, который соответствует индексу 6 столбца (он начинается с 0). Во внутреннем операторе if он проверяет значения ячеек и соответственно меняет цвет фона ячейки.

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