How to create custom cursor in javaFX?


Question

I am trying to create custom cursor in javaFX. Here is my code:

Image image = new Image("mycursor.png");

Pane pane= new Pane();
pane.setCursor(new ImageCursor(image,
                                image.getWidth() / 2,
                                image.getHeight() /2));

Is the creation of cursors for windows 8.1 does not work?

1
0
2/19/2014 11:28:35 PM

Accepted Answer

Checkout the ImageCursor.getBestSize() methods and ImageCursor.getMaximumColors() and see what they return, then try a custom cursor image which matches the best size and maximum colors. Most likely this will be a 32x32 cursor for Windows 8.1.

Here is a quote from the ImageCursor.getBestSize() javadoc:

Gets the supported cursor size that is closest to the specified preferred size. A value of (0,0) is returned if the platform does not support custom cursors.

Note: if an image is used whose dimensions don't match a supported size (as returned by this method), the implementation will resize the image to a supported size. This may result in a loss of quality.

Note: These values can vary between operating systems, graphics cards and screen resolution, but at the time of this writing, a sample Windows Vista machine returned 32x32 for all requested sizes, while sample Mac and Linux machines returned the requested size up to a maximum of 64x64. Applications should provide a 32x32 cursor, which will work well on all platforms, and may optionally wish to provide a 64x64 cursor for those platforms on which it is supported.

Also ensure that the pane that you create is not of zero size and that the pane has been added to a scene so that there is actually a pane area to mouse over and see the cursor change.

4
2/20/2014 1:43:33 AM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon