I'd recommend getting used to programming command line programs in Java before hopping into GUI's. I recommend this because a lot of the underlying functionality is key to writing a good program. If you start at GUI's, you tend to focus more on interface design and less on the program functionality.
If you choose to take this advice, have a look at the following:
Object Oriented Design
Java Collections (ArrayList, HashMap, HashSet, Array)
These will give you a good foundation to writing Java programs.