Установка курсора мыши для конкретной ячейки JTable

У меня есть JTable с набором нередактируемых ячеек, и я хочу, чтобы все ячейки в определенном столбце отображали другой курсор мыши, пока мышь зависает над ними. Я уже использую собственный рендерер, и установка курсора на компонент рендерера, похоже, не работает (как и для всплывающих подсказок).

Кажется, это работает для редакторов.

Разве это невозможно в JTable, когда ваша ячейка не редактируется, или я что-то упустил?


person Tom Martin    schedule 07.04.2009    source источник


Ответы (2)


Добавьте MouseMotionListener в JTable, а затем в mouseMoved() определите, какой столбец он использует JTable's columnAtPoint(), и если это конкретный столбец, который вам нужен, setCursor() в JTable.

person Kevin Herron    schedule 07.04.2009
comment
Я приму ответ, потому что это то, что мы уже делали, и это работает. Хотя я надеялся найти что-то покрасивее. - person Tom Martin; 20.05.2009
comment
да, это проще. :D - person gumuruh; 10.04.2012
comment
Это работает хорошо, кроме случаев, когда JTable содержится в панели JTabbedPane. В этом случае курсор, установленный на JTable, не действует. Похоже, это ошибка в Swing (Java SE 1.6.0_27). - person Kevin Rahe; 02.05.2013

Вот один из способов изменить курсор в определенном столбце в JTable:

if(tblExamHistoryAll.columnAtPoint(evt.getPoint())==5)
{
    setCursor(Cursor.HAND_CURSOR); 
}
else
{
    setCursor(0);
}
person Abdul Jabbar    schedule 24.11.2012