2011-09-09 20 views
24

Tengo una lista de palabras dentro de la Lista J. Cada vez que señalo el cursor del mouse sobre una palabra, quiero que el cursor se convierta en un cursor de mano. Ahora mi problema es cómo hacer eso?¿Cómo cambiar el cursor del mouse en java?

¿Alguien me puede ayudar con este problema?

Respuesta

30

Use un MouseMotionListener en su JList para detectar cuándo el mouse entra en él y luego llame al setCursor para convertirlo en HAND_CURSOR.

Código de ejemplo:

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

lo que si quiero los cambios del cursor para estar sucede cuando señalo a la palabra, no en la lista? ¿Es posible? – sack

+1

@Mikel He actualizado mi respuesta para mostrar una mano solo si el cursor está sobre los elementos en la lista. – dogbane

+0

Sí, funciona, pero hay un pequeño problema. Cuando señalo el mouse al lado de la palabra, aún aparece un cursor de mano. Quiero que la palabra solo aparezca como un cursor de mano cuando señalo el cursor del mouse. – sack

Cuestiones relacionadas