Comment masquer le curseur dans une application Swing?
Est-il un moyen de masquer le curseur (autrement que par l'utilisation transparente de l'image comme un curseur)?
- Pouvez-vous expliciter? Curseur de la souris sur une application java?
- oui..je voulais cacher le curseur, lorsque l'utilisateur de pointer la souris en dehors de Composite dans la JFrame.
Vous devez vous connecter pour publier un commentaire.
Il semble que la
Cursor
classe n'a pas de "vide" curseur pour commencer, de sorte que l'on pourrait définir une nouvelle "vide" curseur à l'aide de laboîte à outils.createCustomCursor
méthode.Voici une méthode que j'ai essayé qui semble fonctionner:
Modifier
Concernant le commentaire à propos de tout à l'intérieur de la
JFrame
se retrouver sans un curseur, il semble que leComponent
s qui sont contenues dans leJFrame
sera héritent le curseur du container (JFrame
), donc si c'est une obligation d'avoir un certainComponent
ont apparaître le curseur, on aurait à définir manuellement le curseur souhaité.Par exemple, si il y a un
JPanel
contenues dans leJFrame
, alors on peut mettre le curseur de laJPanel
du système par défaut à l'aide de laCurseur.getDefaultCursor
méthode:tl;dr AWT Kits sont encore buggé en 2017'; la solution est donc d'appeler
à la place.
Comme par Javadoc page pour
createCustomCursor
,À suivre à partir de ce que
devrait faire l'affaire. Malheureusement, il y a un bug lié à ce cas NON traités par le code, voir, par exemple, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7150089 (ce est pour MacOS, mais en parcourant la source, vous pouvez facilement trouver qu'il n'y a pas de vérification pour la 1ère param
Image
valeur de validité dans tout de laToolkit
plate-forme implémentations, il y atracker.isErrorAny()
vérification, ce qui n'aide pas c'est du boulot dans ce cas), donc en passantnull
ou invalideImage
simplement jette un NPEx.Lors de l'utilisation de la LWJGL sous Mac OS, vous devez faire ceci:
Dans la documentation il est dit que si l'image n'est pas valide, alors il sera transparent par défaut, donc en passant d'une image vide entraînera un transparent curseur. Mais le Passage
null
dans la méthode de l'image, une exception.- Je résoudre ce problème beaucoup plus facile: