С 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) {/***/}
});