2011-09-09 18 views
24

Mam listę słów wewnątrz JList. Za każdym razem, gdy wskażę kursorem myszy słowo, chcę zmienić kursor na kursor ręczny. Teraz mój problem polega na tym, jak to zrobić?Jak zmienić kursor myszy w języku Java?

Czy ktoś mógłby mi pomóc w rozwiązaniu tego problemu?

Odpowiedz

30

Użyj MouseMotionListener na swojej JList, aby wykryć, kiedy mysz wchodzi, a następnie zadzwoń pod numer setCursor, aby przekształcić go w .

Przykładowy kod:

final JList list = new JList(new String[] {"a","b","c"}); 
list.addMouseMotionListener(new MouseMotionListener() { 
    @Override 
    public void mouseMoved(MouseEvent e) { 
     final int x = e.getX(); 
     final int y = e.getY(); 
     // only display a hand if the cursor is over the items 
     final Rectangle cellBounds = list.getCellBounds(0, list.getModel().getSize() - 1); 
     if (cellBounds != null && cellBounds.contains(x, y)) { 
      list.setCursor(new Cursor(Cursor.HAND_CURSOR)); 
     } else { 
      list.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 
     } 
    } 

    @Override 
    public void mouseDragged(MouseEvent e) { 
    } 
}); 
+0

co jeśli chcę zmiany kursora się zdarzyć, gdy wskazują na słowa, nie ma na liście? Czy to możliwe? – sack

+1

@Mikel Zaktualizowałem swoją odpowiedź, aby wyświetlić dłoń tylko wtedy, gdy kursor znajduje się nad pozycjami na liście. – dogbane

+0

Tak, działa, ale jest mały problem. Kiedy wskażę myszą obok słowa, nadal pojawia się kursor ręki. Chcę, aby słowo wyświetlało się tylko kursorem ręki, gdy wskażę kursor myszy. – sack