Actually, this code works fine... the actual problem is that the event
thread is being blocked in some way, which keeps the cursor from changing back to what it's supposed to be after the native frame changes it to the resize cursor. Try the code below, then comment out the new thread being launched in the ActionListener (and leave the contents of the run() inside the actionPerformed()) and you will see the same behavior.