Being a good programmer isn't an issue of time so much as it is an issue of being able to perform certain tasks. Swing is certainly something you want to know if you want to make a graphics application. If you want other things to know about Java, learn how to use the collections framework, which defines different data structure interfaces in Java. Of course, learning how the data structures work and making them from scratch is nice. Other than that, it really depends on what you're going to be developing. I have found java.sun.com's API to be invaluable