תכנית לדוגמה
תכנית זו ממחישה אירועי רכיב, ומפעילה את המתודות componentShown() (רכיב-נראה) ו – componentHidden() (רכיב מוסתר) של ממשק ComponentListener תחת שליטת תכנית. המשתמש יכול להפעיל את המתודות componentMoved() ו- componentResized() ע"י הזזה ושינוי גודל של אובייקט המסגרת על המסך.
התכנית ממחישה גם את השימוש במחלקה פנימית אנונימית על מנת לסיים את התכנית כאשר המשתמש מקיש על כפתור close –סגור שעל אובייקט המסגרת.
היא ממחישה גם את השימוש במחלקה השולטת כמחלקת מאזין. במצב זה, מתודות המאזין מוגדרות כמתודות של המחלקה השולטת במקום להיות מוגדרות כמתודות של מחלקות מאזין המהודרות בנפרד.
פלט טיפוסי מהתכנית מוצג בפירוט התכנית המובא בהמשך.
תכנית זו נבחנה תוך שימוש ב 1.1.6 JDK תחת חלונות 95.
מקטעי קוד מעניינים
נתחיל עם השורה הראשונה של הגדרת המחלקה השולטת. שים לב שהמחלקה השולטת מממשת את ממשק ComponentListener. בעשותה כן, מתודות המאזין המוצהרות בממשק זה חייבות להיות מוגדרות במחלקה השולטת, ואובייקט של המחלקה השולטת
(this) הוא אובייקט המאזין אשר נירשם על עצמו (this).
class Event34 extends Frame implements ComponentListener{ |
אני אדלג על המתודה main (אשר לא עושה דבר פרט להבזיק מופע של המחלקה השולטת) ואעבור הלאה לבנאי. אני אדגיש רק את אותם הצהרות שמעניינות בבנאי בהתחשב באירועי-רכיב או המבנה של התכנית.
המקטע הבא מראה את הקוד לרישום את האובייקט כמאזין לעצמו. זה סגנון תכנות נסתר משהו או סודי אשר בו לא השתמשתי בהיקף נרחב בשיעורי הדרכה אלה עד לנקודה זו אך אתם אכן רואים מחברים אחרים משתמשים בו.
this.addComponentListener(this); |
המקטע הבא מראה הצהרות הגורמות למתודות componentShowm() ו- componentHidden() של ממשק ComponentListener להיקרא פעמים אחדות ברצף.
this.setVisible(true);//invoke shown event this.setVisible(false);//invoke hidden event this.setVisible(true);//invoke shown event |
על מנת לקרוא לשתי המתודות האחרות של הממשק, תצטרך ידנית לשנות גודל ולהזיז את אובייקט המסגרת על המסך.
המקטע האחרון מראה את ההגדרה של אחת המתודות של ממשק הComponent Listener . ההגדרות של כל ארבעת המתודות הן זהות, במהותן כך שרק אחת מהן מוצגת כאן .
public void componentResized(ComponentEvent e){ System.out.println("Resized\n" + e.getSource()); }//end componentResized() |
הקוד בתכנית אשר לא הודגש במקטעים שלמעלה יכול להיראות ברישום של התכנית המובא ביחידה הבאה.