It's pure blOOat, making you create three instances of three different classes just to open a fucking file!
OH NOES! May I see a code, so next time I see a Javaphile I thrust it under his nose as a real example of the enterprise-class stupidity?
I remember something with Observer-Producer-Factory crap for displaying simple static images in applets, but that was long time ago... And I forgot almost everything about Java (except that it sucked hard, lol) since then.