Как удалить ячейку JTable bgColor при наведении на другую ячейку? - PullRequest
1 голос
/ 05 июля 2010

Я создал свой собственный TableCellEditor для столбца JTable, чтобы выполнять некоторые специальные операции при редактировании ячеек этого столбца.

В этом TableCellEditor я определяю цвет при наведении ячейки в этом столбце, например:

public Component getTableCellEditorComponent(JTable table, Object value,boolean isSelected, int row, int column) {  
    if( isSelected )  // User clicked on this cell.
        setBackground( selectedRowBG );
    else if( rowIndexToHighlight == row  )  // user is hovering on this cell.
        setBackground( hoveredRowBG );
    else  // Set default cell color.
        setBackground( unHoveredRowBG );

    return this;
}

Моя проблема заключается в том, что, когда я наводю указатель мыши на ячейку в этом специальном столбце, цвет фона ячейки становится «hoveredRowBG», а затем, если я перемещаюсь мышью на ячейку в другом столбце или перемещаюсь в пустое место в таблице Это не имеет строк), специальная ячейка bgColor по-прежнему имеет цвет "hoveredRowBG". Я хочу удалить этот цвет, когда такое происходит.

Есть идеи?

1 Ответ

2 голосов
/ 05 июля 2010

Просто сохраните текущую выделенную строку где-нибудь и проверьте, во время зависания, изменилась ли она Если да, то выделите последний выделенный и сохраните текущий. lastHighlightedRow - это поле в моем примере, вам может понадобиться другое место для хранения значения.

public Component getTableCellEditorComponent(JTable table, Object value,boolean isSelected, int row, int column) {  
    if( isSelected )  // User clicked on this cell.
        setBackground( selectedRowBG );
    else if( rowIndexToHighlight == row  ) {  // user is hovering on this cell.
        if (!(lastHighlightedRow == this)) {
           lastHighlightedRow.setBackground(unHoveredRowBG);
           lastHighlightedRos = this;
        }
        setBackground( hoveredRowBG );
    }

    return this;
}
...