First let me preface my questions by saying I have a great knowledge of Java programming, in terms of how to logically create/solve a task. Where I lack knowledge is in the "big picture" of software design. For the first time, I am developing a fully functional software package and I often find myself confused as to how to efficiently organize and build my software. For instance, one portion of my program involves a JInternalFrame which would hold a JLabel that holds a picture, upon which users plot out data points. I find that I am unsure of what would be the most modular, efficient, upgradeable method of organizing both the GUI and user data. In the example with JInternalFrame, where should mouseevents/keyevents be processed? Where should popupmenus/menubar actions be processed? How should this portion of my program operate in relation to the overall program? How should another portion of the program access this portion's data? These are the type of questions I usually find myself unable to answer. Since this is my first "real" software package I know that I will end up making many many changes to different portions of the package, and if I do not implement an efficient design of organizing data, I will make much more work for myself.
Thank you in advance,