¿Hay alguna manera de ocultar el cursor (que no sea el uso de una imagen transparente como cursor)?¿Cómo ocultar el cursor en una aplicación Swing?
Respuesta
Parece que la clase Cursor
no tiene un cursor "en blanco" para comenzar, por lo que se podría definir un nuevo cursor "en blanco" con el método Toolkit.createCustomCursor
.
Ésta es una forma He intentado que parece funcionar:
// 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);
Editar
En cuanto al comentario sobre todo dentro de la JFrame
quedarse sin un cursor, parece que los Component
s que están contenidos en el JFrame
terminarán heredando el cursor del contenedor (el JFrame
), por lo que si es un requisito tener un cierto Component
haga que aparezca el cursor, uno debería configurar manualmente el cursor deseado.
Por ejemplo, si hay un JPanel
contenida en el JFrame
, entonces se podría definir el cursor de ese JPanel
de una omisión del sistema utilizando el Cursor.getDefaultCursor
método:
JPanel p = ...
// Sets the JPanel's cursor to the system default.
p.setCursor(Cursor.getDefaultCursor());
Muchas gracias por la respuesta Coobird. Pero tengo otro problema. Creé JFrame que contiene JPanel, cuyo tamaño es más pequeño que el JFrame. Solo quiero que el cursor desaparezca cuando el mouse apunte fuera del JPanel. ¿Eso significa que cuando coloque el cursor en el JFrame principal como invisible, el cursor desaparecerá por completo en la pantalla? – Jessy
Hola Jessy, he agregado la parte sobre cómo configurar el JPanel al sistema predeterminado en mi respuesta. – coobird
Muchas gracias CooBird ... ¡Funciona! :-) hiciste mi día ... – Jessy
puedo solucionar este problema mucho más fácil:
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();
}
});
Extraño, pero ayer funciona, pero ahora no funciona. Necesito probarlo más tiempo. –
Cuando se utiliza el LWJGL en Mac OS que tiene que hacer esto:
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 Los kits de herramientas todavía están dañados en 2017 '; la solución adecuada es, por lo tanto, llamar al
w.setCursor(w.getToolkit().createCustomCursor(
new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB),
new Point(),
null));
en su lugar.
Según Javadoc page for createCustomCursor
,
Crea un nuevo objeto de encargo del cursor. Si la imagen que se visualiza no es válida, el cursor estará oculto ( completamente transparente) y el punto de acceso se establecerá en (0, 0).
De ello se sigue de ello que
w.setCursor(w.getToolkit().createCustomCursor(null, null, null));
debe hacer el truco. Lamentablemente, hay un error relacionado con este caso que NO maneja el código, ver p. http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7150089 (este particular es para MacOS, pero al navegar por la fuente puede encontrar fácilmente que no hay ninguna comprobación para el 1er parámetro Image
valor validez en de las implementaciones de la plataforma Toolkit
; está tracker.isErrorAny()
comprobando, lo que no funciona en este caso), por lo que pasa null
o no válido Image
simplemente arroja un NPEx.
En la documentación, dice que si la imagen no es válida, entonces será transparente por defecto, por lo que pasar una imagen vacía dará como resultado un cursor transparente. Pero pasar null
en el método para la imagen dará como resultado una excepción.
Toolkit tk= getToolkit();
Cursor transparent = tk.createCustomCursor(tk.getImage(""), new Point(), "trans");
- 1. Ocultar el cursor en el terminal remoto
- 2. ¿Cómo ocultar el cursor del mouse?
- 3. Ocultar cursor en todas partes
- 4. cómo ocultar el cursor parpadeante en el texto de entrada?
- 5. Conseguir el Java Swing 'n Drag' Cursor
- 6. actionscript 3 - cómo ocultar el cursor predeterminado en cromo?
- 7. ¿Organizar acciones en una aplicación Swing?
- 8. Cómo ocultar el cursor del mouse con jquery
- 9. ¿Cómo ocultar el cursor parpadeante del cuadro de texto?
- 10. Cómo cerrar una aplicación Java Swing desde el código
- 11. Ocultar cursor en Chrome (e IE)
- 12. cómo ocultar filas específicas de un cursor en Android
- 13. ¿Ocultar globalmente el cursor del mouse en Cocoa/Carbon?
- 14. Cómo utilizar la aplicación Guice en Swing
- 15. Cómo implementar una aplicación Java Swing en la pantalla táctil
- 16. Cómo envolver un componente Swing en una aplicación JavaFX 2.0
- 17. Cómo mostrar un captcha en una aplicación java swing
- 18. Evento OnExit para una aplicación Swing?
- 19. Java swing "trabajando en segundo plano" cursor del mouse
- 20. Ocultar el formulario principal en una aplicación Delphi 2009
- 21. Cómo ocultar una aplicación de consola en C#
- 22. Proyectos Maven2 y Swing: compilar y ejecutar la aplicación swing
- 23. Gestión de sesiones con Hibernate en una aplicación Swing
- 24. Establecer cursor personalizado al arrastrar archivo externo a la aplicación Swing
- 25. Cómo detener el Swing EDT
- 26. Renderizar html en la aplicación Swing
- 27. ¿Cómo alterar el valor WM_CLASS en una aplicación Java GUI basada en Swing o NetBeans Platform?
- 28. Aplicación Swing -> Arrastrar y soltar en el escritorio/carpeta
- 29. Mover el cursor más suavemente (aplicación remota)
- 30. ¿Desde qué subproceso debería invocarse System.exit() en una aplicación Swing?
¿Puede seguir? Cursor en una aplicación java? –
yes..Intenté ocultar el cursor cuando el usuario señala el mouse fuera de JPanel en JFrame. – Jessy