Existe-t-il un moyen de masquer le curseur (autre que l'utilisation d'une image transparente en tant que curseur)?Comment cacher le curseur dans une application Swing?
Répondre
Il semble que la classe Cursor
ne possède pas de curseur "vide" pour commencer, donc on pourrait définir un nouveau curseur "vide" en utilisant la méthode Toolkit.createCustomCursor
.
est ici d'une façon que je l'ai essayé qui semble fonctionner:
// Transparent 16 x 16 pixel cursor image.
BufferedImage cursorImg = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
// Create a new blank cursor.
Cursor blankCursor = Toolkit.getDefaultToolkit().createCustomCursor(
cursorImg, new Point(0, 0), "blank cursor");
// Set the blank cursor to the JFrame.
mainJFrame.getContentPane().setCursor(blankCursor);
Modifier
En ce qui concerne le commentaire de tout à l'intérieur du JFrame
se termine sans un curseur, il semble que les Component
qui sont contenues dans le JFrame
finiront par hériter le curseur du conteneur (le JFrame
), donc si c'est une exigence d'avoir un certain Component
avoir le curseur apparaît, il faudrait régler manuellement le curseur désiré.
Par exemple, s'il y a une JPanel
contenue dans le JFrame
, alors on pourrait placer le curseur de cette JPanel
à défaut du système en utilisant la méthode Cursor.getDefaultCursor
:
JPanel p = ...
// Sets the JPanel's cursor to the system default.
p.setCursor(Cursor.getDefaultCursor());
Merci beaucoup pour la réponse Coobird. Mais j'ai un autre problème. J'ai créé JFrame qui contient JPanel, dont la taille est inférieure à celle de JFrame. Je veux seulement que le curseur disparaisse lorsque la souris pointe à l'extérieur du JPanel.Est-ce que cela signifie que lorsque je place le curseur dans le JFrame principal comme invisible, le curseur disparaîtra complètement à l'écran? – Jessy
Salut Jessy, j'ai ajouté la partie sur la façon de définir le JPanel à la valeur par défaut du système dans ma réponse. – coobird
Merci beaucoup CooBird ... Ca marche !! :-) vous avez fait ma journée ... – Jessy
je résoudre ce problème beaucoup plus facile:
final Timer cursorTimer = new Timer(2000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
getContentPane().setCursor(null);
}
});
cursorTimer.start();
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
getGlassPane().setCursor(Cursor.getDefaultCursor());
cursorTimer.restart();
}
});
Étrange, mais hier ça marche, mais maintenant ça ne marche pas. Je dois le tester plus de temps. –
Lorsque vous utilisez le LWJGL sous Mac OS que vous devez faire ceci:
System.setProperty("apple.awt.fullscreenhidecursor","true");
frame.setCursor(frame.getToolkit().createCustomCursor(
new BufferedImage(3, 3, BufferedImage.TYPE_INT_ARGB), new Point(0, 0),
"null"));
tl; dr AWT Les boîtes à outils sont encore bugguées en 2017 '; la solution appropriée est donc d'appeler
w.setCursor(w.getToolkit().createCustomCursor(
new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB),
new Point(),
null));
à la place.
Comme par Javadoc page for createCustomCursor
,
Crée un nouvel objet curseur personnalisé. Si l'image à afficher n'est pas valide, le curseur sera caché (rendu complètement transparent ) et le point d'accès sera défini sur (0, 0).
Il découlerait de ce que
w.setCursor(w.getToolkit().createCustomCursor(null, null, null));
devrait faire l'affaire. Malheureusement, il y a un bug lié à ce cas qui n'est pas traité par le code, voir par ex. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7150089 (ce particulier est pour MacOS, mais en naviguant sur la source que vous peut facilement constater qu'il n'y a pas de vérification pour la 1ère validité de la valeur param Image
dans une des mises en œuvre de la plate-forme Toolkit
, il y a vérification tracker.isErrorAny()
, qui ne le fait pas est le travail dans ce cas), donc en passant null
ou invalide Image
jette simplement un NPEx.
Dans la documentation, il est indiqué que si l'image n'est pas valide, elle sera transparente par défaut, donc le passage d'une image vide donnera un curseur transparent. Mais le passage null
dans la méthode pour l'image entraînera une exception.
Toolkit tk= getToolkit();
Cursor transparent = tk.createCustomCursor(tk.getImage(""), new Point(), "trans");
- 1. Comment cacher un curseur dans IE? (JavaScript)
- 2. Attendre le curseur dans une application iPhone
- 3. Curseur de point faible dans l'application Swing
- 4. Comment cacher le curseur de la souris en utilisant JOGL2?
- 5. Curseur d'activité en arrière-plan dans Swing
- 6. Curseur Java Swing Range U.I
- 7. Swing Application Exécuter dans le navigateur Web
- 8. Comment rendre tangible une application Swing?
- 9. Comment cacher le curseur du champ de texte sur l'iPhone?
- 10. ou désactiver le bouton cacher dans une autre application
- 11. cacher une application dans le menu de l'application de android
- 12. Comment cacher une puce dans le blog
- 13. Comment utiliser des thèmes tiers dans une application swing?
- 14. swing: réglage du curseur sur JDialog
- 15. Cacher le curseur de la souris après un temps d'inactivité
- 16. Spring et une application Swing ensemble?
- 17. Obtenir Java Swing « No Drag » curseur
- 18. JTextField - Java swing - pas de curseur?
- 19. Comment cacher des lignes spécifiques d'un curseur en android
- 20. Comment cacher une url iframe dans le code source HTML
- 21. Swing Application Analyzer
- 22. Comment puis-je cacher une "application de bureau Java"
- 23. Concernant l'utilisation d'un assistant dans une application swing
- 24. Comment utiliser réellement Swing Application Framework?
- 25. afficher/formulaire cacher lorsque le curseur est dans le coin supérieur gauche
- 26. Comment invoquer manuellement une action dans Swing?
- 27. Comment cacher le curseur d'attente lors du chargement du programme Windows Mobile
- 28. Comment cacher le bouton
- 29. Exécution de composants SWT dans une application Swing
- 30. Comment puis-je intégrer une application de traitement de texte externe à une application Java Swing?
Pouvez-vous nous en dire plus? Curseur sur une application Java? –
Oui ... Je voulais cacher le curseur, lorsque l'utilisateur pointe la souris à l'extérieur de JPanel dans JFrame. – Jessy