web-dev-qa-db-fra.com

Comment changer le curseur de la souris en java?

J'ai une liste de mots dans la JList. Chaque fois que je pointe le curseur de la souris sur un mot, je veux que le curseur se transforme en curseur à main. Maintenant, mon problème est de savoir comment faire cela?

Quelqu'un pourrait-il m'aider avec ce problème?

29
sack

Utilisez un MouseMotionListener sur votre JList pour détecter le moment où la souris y entre, puis appelez setCursor pour le convertir en HAND_CURSOR.

Exemple de code:

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) {
    }
});
36
dogbane

Vous voulez probablement regarder le Component.setCursor , et utilisez-la avec la méthode Cursor.HAND constante.

19
aioobe

Vous pouvez également ajouter MouseListener à la jList (ou à tout composant ui). Implémentez ensuite les méthodes qui mouseEntered, mouseExited

jList.addMouseListener(new MouseListener() {
                    @Override
                    public void mouseEntered(MouseEvent e) {
                        cw.list.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
                    }

                    @Override
                    public void mouseExited(MouseEvent e) {
                        cw.list.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                    }
                });
0
NuOne