Try this code. Of course you will have to replace methodThatReturnsBufferedImage() with something that’s actually part of your code, but other than that you’re good to go.
BufferedImage cursor=methodThatReturnsBufferedImage();
Cursor myCursor= Toolkit.getDefaultToolkit().createCustomCursor(cursor,new Point(0,0),"");
setCursor(myCursor);
You might want to store a bunch of them as an array to call them up easily.
Oh, and one more thing, there’s a glitch on the Mac where the cursor goes back to normal after your window loses and recieves focus again. Add a FocusListener and when the window regains focus then reset the cursor to your custom cursor.
Happy Coding!