If you change the active Cursor shape, and it does not show, than you have a classic Swing Threading problem. The easy way to solve the problem is to change the cursor from another Thread, and then change it back when the work is finished, just before ending the Thread. For a more detailed explanation of what is going on, read Swing Threading.
private class ThrdVC implements Runnable{ public void run(){ // do some work SwingUtilities.invokeLater(new Runnable(){ public void run(){ setCursor(Cursor.getDefaultCursor()); } } // swingutilities } } // ThrdVC ... // instead of changing cursors and calling doSomeWork directly in this // method, run it in a separate thread public void actionPerformed(){ setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); new Thread(new ThrdVC()).start(); // start the thread }