3 votes

Réglage du curseur en Java

J'ai essayé de résoudre le problème des curseurs Windows. J'ai réussi à faire correspondre les valeurs du registre aux noms donnés aux différents types de curseurs dans la boîte de dialogue Propriétés de la souris (celle à laquelle on accède via le Panneau de configuration).

Par exemple, ce que le registre appelle le curseur "AppStarting", la boîte de dialogue Propriétés de la souris l'appelle le curseur "Working In Background", etc.

Là où j'ai des difficultés, c'est lorsque j'utilise Java pour définir ces curseurs, car pour beaucoup d'entre eux, il ne semble pas y avoir de constante. Dans Cursor.java, les différents curseurs sont définis :

public static final int DEFAULT_CURSOR = 0;
public static final int CROSSHAIR_CURSOR = 1;
public static final int TEXT_CURSOR = 2;
public static final int WAIT_CURSOR = 3;
public static final int SW_RESIZE_CURSOR = 4;
public static final int SE_RESIZE_CURSOR = 5;
public static final int NW_RESIZE_CURSOR = 6;
public static final int NE_RESIZE_CURSOR = 7;
public static final int N_RESIZE_CURSOR = 8;
public static final int S_RESIZE_CURSOR = 9;
public static final int W_RESIZE_CURSOR = 10;
public static final int E_RESIZE_CURSOR = 11;
public static final int HAND_CURSOR = 12;
public static final int MOVE_CURSOR = 13;

Mais, après quelques tests, il y a plusieurs valeurs de registre auxquelles aucune d'entre elles ne correspond. Par exemple, les entrées de registre 'App Starting', 'Help', 'No', 'NWPen', 'Person', 'Pin' et 'UpArrow' n'ont aucune définition correspondante (et il ne s'agit pas seulement des ints après 13 ; j'ai eu une violation lorsque j'ai utilisé 14 comme valeur).

Plus surprenant encore, la valeur "Hand" du registre ne correspond pas réellement à la valeur HAND_CURSOR. La définition d'un nouveau curseur pour la définition HAND_CURSOR ne modifie pas la valeur stockée dans le registre pour la clé "Hand".

Alors comment puis-je définir, par exemple, la valeur du curseur AppStarting en utilisant Java ?

Info : Windows 10 64-bit jdk1.8.0_151

0voto

dimwittedanimal Points 498

J'ai trouvé une réponse aquí qui dit :

Le Java Runtime Environment exige que les curseurs personnalisés soient au format PNG ou GIF. Ce n'est pas parce que vous utilisez Java sur un système Windows que vous pouvez utiliser ce format pour une interface graphique dans Swing/AWT.

Cependant, j'ai pu trouver ce dans la documentation, donc peut-être vous serez en mesure de trouver le curseur spécifique que vous recherchez par son nom. D'après cette documentation :

Renvoie un objet curseur personnalisé spécifique au système correspondant au nom spécifié. Les noms de curseurs sont, par exemple "Invalide.16x16"

Edit : La deuxième partie n'est pas pour tirer du système, plutôt, les curseurs inclus avec le JRE. Voir ceci question .

Edit 2 : J'ai trouvé ce paquet qui a un Curseur de démarrage d'application qui pourrait répondre à vos besoins... Si vous incluez le paquet. Puisque c'est un objet Cursor, il devrait répondre à vos besoins.

Edit 3 : Des informations sur draw2d sur eclipse.org peuvent être trouvées aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X