Параметры вместо JTable

  1. Я хочу раскрасить каждую строку таблицы, используя определенные значения базы данных

      spcification of mine database is some what like
    
       **
       id     name    color
       1      pavan   red
       2      xyz     white
       **
    
  2. я могу указать цвет для полной таблицы, используя

       table.setBackground(new color(158,145,134);       
    
    
    
    
       please provide me some solution or hint to approch towards answer,
       Thanks in advance.
    

person Pavan Gomladu    schedule 30.03.2012    source источник
comment
Почему вы говорите, что это сложно применить на JTable? Вы ознакомились с этим руководством?   -  person assylias    schedule 30.03.2012
comment
JXTable (из проекта SwingX) поддерживает маркеры и по умолчанию содержит альтернативный маркер строк, что делает это требование почти однострочным.   -  person Robin    schedule 30.03.2012
comment
но можем ли мы применить его для каждой строки в соответствии со значением db заранее спасибо   -  person Pavan Gomladu    schedule 31.03.2012


Ответы (1)


С JTable это совсем не сложно! На самом деле, это невероятно легко!

Смотрите мой ответ здесь: Выделите ячейку в JTable через пользовательскую модель таблицы

Воспроизведено для удобства:


...Подкласс JTable и переопределить JTable.preparedRenderer(TableCellRenderer renderer, int row, int column). Если числа row и column совпадают, вы можете изменить цвет фона Component, возвращаемого в качестве отображаемого (обычно это JLabel);

Вот пример, который выделяет строку, над которой находится мышь:

@Override
public Component prepareRenderer(final TableCellRenderer renderer, final int row, final int column) {
    final Component c = super.prepareRenderer(renderer, row, column);
    if (row == this.itsRow) {
        c.setBackground(Color.RED);
    }
    return c;
}

где this.itsRow — поле int, обновленное MouseMotionListener:

this.addMouseMotionListener(new MouseMotionListener() {
        public void mouseMoved(MouseEvent e) {
            SubclassedJTable.this.itsRow = SubclassedJTable.this.rowAtPoint(e.getPoint());
            SubclassedJTable.this.repaint();
        }
        public void mouseDragged(MouseEvent e) {/***/}
    });
person BenCole    schedule 30.03.2012
comment
сэр, необходимо, чтобы номера строк и столбцов были одинаковыми, чтобы покрасить каждую строку в соответствии со значением db rply... спасибо - person Pavan Gomladu; 31.03.2012