2009-04-07 16 views
5

Mam tabelę JTable z zestawem nieedytowalnych komórek i chcę, aby wszystkie komórki w określonej kolumnie miały wyświetlany inny kursor myszy, podczas gdy myszka unosi się nad nimi. Używam już niestandardowego mechanizmu renderowania i ustawienie kursora na komponencie renderowania nie działa (tak jak w przypadku etykiet narzędzi).Ustawianie kursora myszy dla konkretnej komórki JTable

Wygląda na to, że działa on dla redaktorów.

Czy to nie jest możliwe w JTable, gdy twoja komórka nie jest edytowana lub coś mi brakuje?

Odpowiedz

7

Dodaj MouseMotionListener do JTable, a następnie na mouseMoved() określ, która kolumna używa JTable's columnAtPoint() i czy jest to konkretna kolumna, której szukasz, setCursor() na JTable.

+0

będę akceptować odpowiedź, bo to jest to, co już robi i to działa. Miałem jednak nadzieję, że znajdę coś przyjemniejszego. –

+0

Tak, to jest prostsze. : D – gumuruh

+2

Działa to dobrze, ** z wyjątkiem **, gdy JTable jest zawarty w panelu JTabbedPane. W takim przypadku kursor ustawiony na JTable nie działa. Wygląda na to, że jest to błąd w Swing (Java SE 1.6.0_27). –

0

Oto jeden ze sposobów na zmianę kursora na wybranej kolumny w JTable:

if(tblExamHistoryAll.columnAtPoint(evt.getPoint())==5) 
{ 
    setCursor(Cursor.HAND_CURSOR); 
} 
else 
{ 
    setCursor(0); 
} 
Powiązane problemy