Java Project Ideas
Write a Java program that does something fun and interesting. It should be
large enough to be challenging, but small enough to be successfully completed
by the last week of class.
Here are some examples of programs you might write:
- Drawing - A program that lets people draw shapes, lines, &
- Image Viewer - Displays an image either via a supplied URL or
a pick-list. Make sure that people can resize, stretch, flip and
manipulate the image in other interesting ways.
- Web Browser - Allows the user to enter URLs or click on links
to retrieve Web pages. Should include support for bookmarks, text
- Editor - Lets the user edit text and save their work to a
file. Should include formatting like bold, underline, etc, and possibly an
- Email Client - Like the editor, lets the user type a message
then sends it to a recipient. Note: If you're going to do this, I
hope you have an SMTP server of your own that you can use to test it. I
further hope that you are willing to research how to do the networking
stuff on your own, as we will not be covering it in class.
- GUI Shell - A graphical shell like Windows Explorer that
allows you to view files & directories and perform file system
- Graphing Calculator - Allows the user to enter equations which
are graphed in a Cartesian plane.
- Financial Calculator - Lets people enter amounts in a ledger and calculates
a balance. Alternatively, it might amortize a loan or mortgage based on
initial amounts, interest, etc.
- Project Manager - Allows people to build a Gant chart which
defines the steps in a project.
- Board / Card Game - Chess, Checkers, Hearts, Mahjongg,
Solitaire, whatever. (Look at
games.yahoo.com for inspiration.)
- Arcade Game - Some Space Invaders / Defender / Breakout clone. Or
some brand-new idea you invent yourself...
- Something Else... - Maybe you've got some fantastic idea that
isn't on this list. Clear it with me first and then go to it!
Here is what I expect to see in your project:
- Classes, subclasses, public/private methods/variables and
- Use a layout manager of some kind
- Probably some painting and / or graphics (depending)
- GUI controls - buttons, lists, and the like
- Event handling - Clicks, keyboard events, etc.