2011-09-09 23 views
24

Ho una lista di parole all'interno di JList. Ogni volta che puntiamo il cursore del mouse su una parola, voglio che il cursore cambi in un cursore a forma di mano. Ora il mio problema è come farlo?Come cambiare il cursore del mouse in java?

Qualcuno potrebbe aiutarmi con questo problema?

risposta

30

Utilizzare un MouseMotionListener su JList per rilevare quando il mouse viene inserito e quindi chiamare setCursor per convertirlo in un HAND_CURSOR.

codice di esempio:

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

se voglio i cambiamenti del cursore essere accade quando indico la parola, non è nella lista? È possibile? – sack

+1

@Mikel Ho aggiornato la mia risposta per visualizzare una mano solo se il cursore si trova sopra gli elementi nell'elenco. – dogbane

+0

Sì, funziona ma c'è un piccolo problema. Quando indico il mouse accanto alla parola, appare ancora un cursore a forma di mano. Voglio che la parola appaia come un cursore a forma di mano solo quando punto il cursore del mouse. – sack

Problemi correlati