2011-09-09 3 views
24

У меня есть список слов внутри JList. Каждый раз, когда я указываю курсор мыши на слово, я хочу, чтобы курсор менялся в ручном курсоре. Теперь моя проблема в том, как это сделать?Как изменить курсор мыши в java?

Может ли кто-нибудь помочь мне с этой проблемой?

ответ

30

Используйте MouseMotionListener на вашем JList, чтобы определить, когда мышь входит в него, а затем звоните setCursor, чтобы преобразовать его в HAND_CURSOR.

Пример кода:

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

что, если я хочу, чтобы изменения курсора будет происходить, когда я указываю на слова, а не в списке? Является ли это возможным? – sack

+1

@Mikel Я обновил свой ответ, чтобы отобразить руку, только если курсор находится над элементами в списке. – dogbane

+0

Да, это работает, но есть небольшая проблема. Когда я нажимаю мышь рядом с словом, все же появляется курсор руки. Я хочу, чтобы слово отображалось только как ручной курсор, когда я указываю курсор мыши. – sack