Non of your things.
You need to structure your code. Therefor create packages. Split your code in classes, which have a logical structure. It's quite normal to have a big number of classes - I'm working on a project with (currently) over 400 classes.
But don't just create random packages - think of a proper naming:
- com.foo.main (Application starter)
- com.foo.gui (Gui goes here)
- com.foo.action (general action handling)
- com.foo.fascade.chat (lifecycle data store for chat)
- com.foo.fascade.filesharing (lifecycle data store for filesharing)
- com.foo.chat (general code for chat)
- com.foo.chat.images (icons and images for chat)
- com.foo.filesharing (general code for filesharing)
- ....
this way you will have a structure that leads you.
You should also try to split GUI and command. Therefor you can change the GUI without changing the reest of the code. That is called
MVC[
^] and can be seen as a very basic structure pattern.
read here for more information on proper Java Design:
http://www.javaworld.com/columns/jw-java-design-patterns-index.html[
^]
http://www.oodesign.com/[
^]