Как удалить ячейку JTable bgColor при парении на другой ячейке?

Я создал свой собственный 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
задан Kai 24 April 2013 в 12:06
поделиться

1 ответ

Просто сохраните где-нибудь выделенную строку и при наведении курсора проверьте, изменилась ли она. Если да, снимите выделение с последнего выделенного и сохраните фактическое. 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;
}
2
ответ дан 2 September 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: