2009-04-07 9 views
5

Ich habe eine JTable mit einer Reihe von nicht editierbaren Zellen und ich möchte, dass alle Zellen in einer bestimmten Spalte einen anderen Mauszeiger anzeigen, während die Maus über sie bewegt wird. Ich benutze bereits einen benutzerdefinierten Renderer und die Einstellung des Cursors auf der Renderer-Komponente scheint nicht zu funktionieren (wie bei Tooltips).Setzen des Mauszeigers für eine bestimmte JTable-Zelle

Es scheint für Redakteure zu arbeiten.

Ist dies in JTable nicht möglich, wenn Ihre Zelle nicht bearbeitet wird oder fehlt mir etwas?

Antwort

7

Fügen Sie einen MouseMotionListener zur JTable und dann auf mouseMoved() zu bestimmen, welche Spalte es JTable columnAtPoint() verwendet und wenn es die bestimmte Spalte ist, die Sie suchen, setCursor() auf der JTable.

+0

Ich werde die Antwort akzeptieren, weil das ist, was wir bereits taten, und es funktioniert. Ich hatte gehofft, etwas schöneres zu finden. –

+0

Ja, das ist einfacher. : D – gumuruh

+2

Das funktioniert gut, ** außer ** wenn die JTable in einem Panel eines JTabbedPane enthalten ist. In diesem Fall hat ein auf der JTable gesetzter Cursor keine Wirkung. Dies scheint ein Bug in Swing zu sein (Java SE 1.6.0_27). –

0

Hier ist ein Weg, um den Cursor an einer bestimmten Spalte in JTable ändern:

if(tblExamHistoryAll.columnAtPoint(evt.getPoint())==5) 
{ 
    setCursor(Cursor.HAND_CURSOR); 
} 
else 
{ 
    setCursor(0); 
} 
Verwandte Themen