2010-11-25 24 views
23

Me gustaría cambiar el icono del cursor a mi imagen personalizada de 32x32 cuando se está ejecutando una aplicación Java. Miré y busqué, los que encontré están simplemente colocando el cursor en un JComponent. Pero quiero que el cursor cambie a mi ícono específico donde sea que se mueva, explore y haga clic, siempre y cuando la aplicación Java aún esté ejecutándose, o puede decir el tiempo de ejecución del programa.¿Cómo cambiar el icono del cursor en Java?

Muchas gracias.

Respuesta

8

Llame Component.setCursor. La clase Cursor como algunos cursores predefinidos.

imagen del cursor

Un cliente puede ser creada:

setCursor(Toolkit.getDefaultToolkit().createCustomCursor(
new ImageIcon("custom.png").getImage(), 
new Point(0,0),"custom cursor")); 
+1

pero eso es para un marco, como he dicho, quiero extender demasiado al sistema en tiempo de ejecución de la aplicación. – DYL

+0

El enlace del cursor personalizado está roto –

41

imagen del cursor estándar:

setCursor(Cursor.getDefaultCursor()); 

usuario Imagen definido:

Toolkit toolkit = Toolkit.getDefaultToolkit(); 
Image image = toolkit.getImage("icons/handwriting.gif"); 
Cursor c = toolkit.createCustomCursor(image , new Point(mainPane.getX(), 
      mainPane.getY()), "img"); 
mainPane.setCursor (c); 

Puede descargar una fuente de ejemplo zip que contiene: HERE

+0

thx de todos modos, pero una vez más, no se establece el cursor solo en un componente, bastante seguro de que "mainpane" es un componente como el panel. Pero quiero que se cambie donde quiera que vaya, no se limita al marco o panel. Thx – DYL

+0

simplemente puede usar marco en lugar de panel. si extiende su clase usando JFrame, simplemente use "this". Espero que estés claro ahora ... –

+0

pero incluso usando el marco, el cursor personalizado solo está limitado dentro del alcance del marco ¿verdad? si mueve el cursor fuera del marco, lo restaura al cursor predeterminado del sistema. Aunque no quiero esto ... – DYL

3

Intenta establecer el cursor en el Panel raíz.

frame.getRootPane().setCursor(...); 
+0

thx embargo, aún solo dentro del panel o marco. No sé por qué se puede hacer en C# o C++, pero no sé qué hacer en Java. – DYL

+8

Y esa es la forma en que debería funcionar. Java solo tiene control del marco, no de todo el escritorio. No usaría su aplicación si tratara de controlar el ícono cuando estaba en otra aplicación. – camickr

0

¿Por qué no tiene una clase MyFrame que excede JFrame. Todo lo que hace es llamar al constructor de JFrame y establece el cursor en el cursor deseado. En mi aplicación, tenemos una pantalla táctil sin cursor, así que así es como tengo la intención de implementarlo.

1
public void mouseEntered(MouseEvent e) 
{ 
// set cursor for frame and its component 
// this is the current frame you are using . 
// You can change the this keyword with your frame name . 

java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); 
Image image = toolkit.getImage("/images/mousepoint.jpg"); 
Cursor a = toolkit.createCustomCursor(image , new Point(this.getX(),this.getY()), ""); 
this.setCursor (a); 
} 

o puede referirse a: -
http://java23s.blogspot.in/2011/07/to-change-mouse-pointer-using-java.html

Cuestiones relacionadas