» נושאי לימוד
» נושאי לימוד
יום חמישי 1 במאי 2025
קטעי קוד מעניינים
דף ראשי  מתקדמים  Creating, Trapping, and Processing Custom Event Types  תוכנית לדוגמא  קטעי קוד מעניינים גרסה להדפסה

 

קטעי קוד מעניינים

 

קטע הקוד המעניין הראשון הוא הגדרת המחלקה ממנה יוכלו להיווצר אובייקטים מסוג האירועים החדש.( הגדרת המחלקה כולה מופיעה בקובץ

 

class CustomEvent extends EventObject{
  String id;//instance variable for an object of this type
  //--------------------------------------------------------
  CustomEvent(Object obj, String id){//constructor
    super(obj);//pass the Object parameter to the superclass
    this.id = id;//save the String parameter
  }//end constructor
  //--------------------------------------------------------
  //method to return the saved String parameter
  String getCustomID(){
    return id;
  }//end getCustomID
}//end class CustomEvent

 

כפי שאתה יכול לראות מחלקה זו מגיעה ל  java.util.EventObject. הבנאי לאובייקט ממחלקה זו מקבל שני פרמטרים. הפרמטר הראשון הוא התייחסות (reference) לאובייקט המייצר את האירוע. פרמטר זה מועבר לבנאי של מחלקת העל EventObject   שם הוא מאוחסן לצורך גישה מאוחרת יותר של מתודת getSource()   של המחלקה EventObject.

 

הפרמטר השני היא מחרוזת מידע זיהוי המועבר לבנאי כאשר אובייקט מסוג CustomEvent מיוצר. בתוכנית זו מחרוזת המידע, היא פשוט אובייקט מסוג מחרוזת המאוחסן כמשתנה דוגמא באובייקט המקור, כאשר הוא נוצר. באופן וירטואלי אתה יכול להעביר כל פקודת מידע או מידע לזיהוי בצורה זו. מחרוזת המידע מאוחסנת כמשתנה דוגמא באובייקט . CustomEvent.

 

המחלקה מייצרת גם מתודת עזר המחזירה את המחרוזת המאוחסנת כמשתנה לדוגמא באובייקט.

 

קטע הקוד המעניין הבא הוא הגדרת מנשק Listner חדש הנקרא CustomEventListener  המגיע ל  EventListener. מנשק זה מגדיר מתודה הנקראת customEventTrapped(). זוהי מתודת העיבוד הראשית של אובייקטי Listner ממחלקה זו. במהלך מתודה זו אירועים משוגרים לאובייקטי listner.

interface CustomEventListener extends EventListener{
  void customEventTrapped(CustomEvent e);
}

 

 

 

 

קטע הקוד המעניין הבא מממש את המנשק הנ"ל ומגדיר מחלקת Listner לאירועים מהסוג החדש. זוהי מחלקת Listner    plain-vanilla, המפעילה את מתודת customEventTrapped()  המוגדרת במנשק. המתודה המפעילה משתמשת במתודות העזר כדילגשת ולהציג את מחרוזת המידע והזיהוי של אובייקטי המקור, מאובייקט CustomEvent.

class CustomEventListenerClass 
                     implements CustomEventListener{
  public void customEventTrapped(CustomEvent e){
    System.out.println(
      "customEventTrapped() method invoked on " + 
                                   e.getCustomID());
    System.out.println("Source of event was " + 
                                     e.getSource());
  }//end customEventTrapped
}//end class CustomEventListenerClass

 

 

 

 

 

 

 

 

 

קטע הקוד המעניין שנותר נמצא בהגדרת מחלקה שנועדה לייצר אירועים מהסוג החדש. מחלקה זו דומה מאד למחלקה שפותחה בשיעור קודם “program-generated events”. כפי שצוין קודם, תוכנית בסיסית זו יכולה לתמוך רק באובייקט Listner  אחד הרשום בכל קובץ מקור של   event-generating.

 

נתחיל בתחילת ההגדרה של המחלקה המראה כי המחלקה מגיעה לרכיבים ומשמרת שני משתנים לדוגמא. אחד מהמשתנים לדוגמא הוא ,String ID מידע המאותחל ע"י הבנאי. המשתנה לדוגמא האחר הוא התייחסות לאובייקט Lustner הרשום באובייקט המקור. קוד המקור פשוט מדי מכדי שנתייחס אליו בחלק זה.

class NonVisual extends Component {
  String ID; // The ID of this object
  //Reference to single Listener object
  CustomEventListenerClass customListener;

 

 

 

 

 

קטע הקוד המעניין הבאהוא הקוד שרושם למעשה אובייקט Listner. קוד זה דומה מאד לקוד בשיעור הקודם מלבד העובדה שקוד זה לא משתמש במתודה  AWTEventMulticaster.add() כדי ליצור ולשמר רשימה של אובייקטי   Listner  רשומים.

קוד זה תומך באובייקט Listner אחד בלבד ומכיל לוגיקה לסיום התוכנית אם נעשה ניסיון לרשום יותר מאובייקט Listner  אחד.

 public void addCustomEventListener(
                          CustomEventListenerClass listener){
    //Do not attempt to add more than one Listener object.
    if(customListener == null) 
      customListener = listener;//one listener only
    else{
      System.out.println(
                 "No support for multiple Listener objects");
      //terminate on attempt to register multiple listeners
      System.exit(0);
    }
  }//end addCustomEventListener()

 

 

 

 

 

 

 

 

 

 

קטע הקוד המעניין הבא היאהמתודה שמשגרת בפועל אירוע מהסוג החדש. במקרה זה השיגור מושג ע"י פנייה למתודת  customEventTrapped() של אובייקטי Listner הרשומים והעברת אובייקט מסוג CustomEvent כפרמטר. גם קוד זה זהה כמעט לקוד בשיעור הקודם וזו דרך שגרתית לשגר אירועים ב 1.1 JDK.

  public void generateCustomEvent() {
    customListener.customEventTrapped(
        new CustomEvent(this, ID));
  }//end generateCustomEvent

 

 

 

 

קטעי קוד אלו הדגימו את הרכיבים החיוניים ליצירת, לכידת ועיבוד סוג אירוע טיפוסי חדש. בחלק הבא מובא רישום מלא של התוכנית.

 31-10-03 / 14:24  נוצר ע"י רונית רייכמן  בתאריך 
 תוכנית לדוגמא - הקודםהבא - רישום התוכנית 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 4