תכנית לדוגמה ראשונה
כפי שהוזכר קודם לכן, על מנת להימנע מחלק מההיבטים הנסתרים של מחלקות/אובייקטים אנונימיים תכנית הדגימה הראשונה עושה שימוש במחלקות פנימיות באופן ישיר יחסית. מחלקות מוגדרות בתוך מחלקות והגדרות מחלקה אלה מנוצלות להבזיק את האובייקטים הנחוצים.
זה נבדל משמעותית משיעורים קודמים על מודל אירוע האצלה Delegation Event Mode)l) בה המחלקות שהיו נחוצות להבזקת אובייקטי-מאזין היו מחלקות של רמה עליונה (תת-מחלקות ישירות של אובייקט המחלקה או תת-מחלקות של מחלקות מתאם כמוMouseAdapter.
בתכנית זו, המחלקות הנחוצות להבזקת אובייקטי –מאזין וכן אובייקטים כלשהם אחרים מונחים בתוך מחלקות אחרות.
דיון בתכנית לדוגמה ראשונה
יכולת המחלקה הפנימית לא קיימת ב1.0 JDK לפיכך, תכנית זו מעוצבת להיות מהודרת ומורצת תחת 1.1JDK. התוכנית משלבת שימוש במחלקות פנימיות עם טיפול באירועים תחת מודל נציגות הטיפול באירועים של1.1 JDK. מחלקת הבקרה מכונה Event23 . מחלקה פנימית המכונה GUI מוגדרת בתוך המחלקה המכונה Event23 ואובייקט של המחלקה הזו מובזק בתוך המתודה העיקרית main() .
בנוסף, שתי מתודות "עיבוד נתונים" המכונות sing() ו – whistle() (שיר ושרק) מוגדרות בתוך מחלקת הבקרה. הם מוגדרים בכזאת דרך על מנת להיות מופרד מפעילות טיפול באירוע אלא שהן נקראות ע"י מתודות מטפל אירוע.
שלוש מחלקות פנימיות נוספות מוגדרות בתוך המחלקה הפנימית המכונה GUI . הן מכונות SingActionListener WhistleActionListener ו – Terminator. כל שלושת אלה הן מחלקות Listener . השתיים הראשונות מיישמות את ממשק ActionListener בעוד השלישית מותחת את המתאם WindowListener .
השתיים הראשונות מעמיסות את מתודת הactionPerformed() של ממשק ActionListener בעוד השלישית מעמיסה את מתודת windowClosing() של ממשק WindowListener.
המחלקה המכונה GUI מותחת מסגרת. שני אובייקטי כפתור המתויגים sing (שיר) ו – whistle (שרוק) מובזקים בבנאי GUI . הם מיוחסים ע"י משתנים המכונים singButton ו whistleButton בהתאמה. שני הכפתורים מוספים לאובייקט המסגרת.
על אף שתכנית מסגרת זו לא עושה שימוש במחלקות אנונימיות, היא כן עושה שימוש באובייקטים אנונימיים. אובייקטי מאזין אנונימיים של המחלקות WhistleActionListner ן SingActionListner מובזקים ונרשמים לטיפול באירועים על שני אובייקטי הכפתור שהנם בעלי שמות דומים. אובייקט מאזין אנונימי נוסף של המחלקה Terminator (מחסלת) נרשם לטיפול באירוע על אובייקט המסגרת של מחלקת GUI.
כאשר התכנית מתחילה אובייקט מסגרת המכיל את 2 הכפתורים מופיע על המסך. כאשר המשתמש מקיש על הכפתור המתויג sing מטפל האירוע הנרשם להאזין לאירועי פעולה על כפתור זה מפעיל מתודה המכונה sing() אשר בתורה מציגה את המסר:
"I am singing , Tra La la" – (אני שר , טרה לה לה).
כאשר המשתמש מקיש על הכפתור המתויג whistle המטפל באירוע שנרשם להאזין לאירועי פעולה על כפתור זה מפעיל את המתודה המכונה whistle() אשר בתורה מציגה את המסר:
"I am whistling, Tweet Tweet Tweet" – (אני שורק טוויט, טוויט,טוויט).
כאשר המשתמש מקיש על תיבת "סגור" שעל המסגרת, מטפל האירוע שנרשם להאזין לאירועי windowClosing() על המסגרת מסיים את התכנית.
תוצאות אלו הופקו תוך שימוש ב1.1 JDK בהרצה תחת חלונות 95.