Often if you follow a Java course or you try to teach yourself Java, you'll need to come up with an idea for a project to implement. It's not easy to think of a project that has the exact right scale, not too big and not too small. Too big and you'll never finish it. Too small and .... well there's no challenge.
Of course, you also need to avoid trying to implement something that's downright impossible due to technical limitations.
Here are some ideas for Java projects that you should be able to implement after following a course on basic Java. They should all be relatively straightforward, but somewhat challenging too. I'll add to this list as more ideas occur to me; meanwhile feel free to share your ideas with the world in the comments section.
Before you begin, a word of advice. Write the most difficult bit of your project first. If there's an aspect to the project that you think you won't be able to handle, start with that and get it nailed before you do the rest. Once you've got any particularly contentious bits out the way, aim to write the most basic form of your application that you possibly can. Afterwards you can refine, refactor and add to what you've done, but if you start with aims that are too lofty, you'll likely never finish.
Write an application that allows you to record and play back sounds from your computer. Once it's working, add as many bells and whistles as time and patience allow, starting with a display of the recorded data in wave form, the ability to save your waves as files, etc, and possibly moving on to allowing editing of your waves.
No wait, it's not as boring as it sounds! Think about it -- banks lend out money which is deposited in other banks which is then lent out again and so on .... what stops the amount of money in the world expanding infinitely? Well, little other than interest rates and the fact that banks can only lend out 90% of what they have on deposit. See if you can write a simulation of the banking system, complete with objects representing banks and objects representing borrowers .... This is a fairly open-ended project, which could be good or bad depending on your point of view.
Write an application that creates fractal images and lets you save them. Again fairly open-ended, starting with a basic app for displaying the Mandelbrot set and moving on from there. There's a lot of chance to practise optimisation with this project. A related idea is to create an app for exploring cellular automata -- search for them on Google or search for the "Game of Life" + automata and you'll understand what I'm talking about. Basically we're talking pretty coloured patterns here, but with a serious mathematical edge.
Download the JMF (Java media framework), and once you've got it installed (installing it is the tricky bit!) you can easily make an mp3 player.
More ideas to follow, as they occur to me. Meanwhile, send me any suggestions you have!