I have a test application (attached as FocusChangeTest.java) that has two JTextFields. I've added a VetoableChangeListener to the KeyboardFocusManager to veto any focus change that would put focus on the second JTextField. It also prints out the old and new values in the PropertyChangeEvent.
Upon launching the application, the following is printed to the console, as the first text field gains focus:
0 Old=null, New=One
After hitting TAB, the following is printed out.
1 Old=One, New=null
2 Old=null, New=Two
3 Old=Two, New=null
4 Old=null, New=null
5 Old=null, New=One
Line is quite odd and doesn't really make sense. Seems like a bug to me.