» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
A First Look, Delegation Event Model
דף ראשי  מתקדמים  A First Look, Delegation Event Model גרסה להדפסה

 

סטודנטים בכיתות של פרופסור בולדווין ל "תכנות Java בשלב ביניים" ב ACC  אחראים לדעת ולהבין את כל החומר בשיעור הזה. 1.1 JDK הותרה לפרסום  רשמית ב18 לפברואר 1997. שיעור זה נכתב במקור בשישה במרץ 1997 תוך שימוש בתכנה ובתיעוד בחבילת הטעינה של 1.1 JDK.

 

הקדמה

 

זהו שיעור אחד בסדרה של שיעורים המתרכז בחבילה  java.awt  אשר בה רב הפונקציונליות היא לספק ממשק משתמש לאפליקציה או לapplet שלך.

 

שרטוט מסגרת (BorderLayout)

 

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

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

עם מחלקת BorderLayout, אתה יכול למקם במיכל עד ל -  5 רכיבים שונים. אם אתה ממקם את כל החמישה במיכל, ארבעה מהם יוצבו לאורך הקצוות של המכל והחמישי יהיה במרכז.

אתה נוקב במיקום של כל רכיב כאשר אתה מוסיף את הרכיב למיכל תוך שימוש במחרוזות "צפון" "דרום" "מזרח" "מערב" ו"מרכז". למשל, שלוש ההצהרות הבאות  

//create a Panel container object 
Panel p = new Panel(); 

//specify use of the BorderLayout manager 
p.setLayout(new BorderLayout());  

//add a button at the bottomp.add(new Button("Okay"), "South");

 

 

 

 

 

 

 

 יפעלו כדלקמן:

יצרו מיכל  Panel חדש.

 יציינו כי משתמשים  במנהל BorderLayout כדי למקם רכיבים במיכל.

ימקמו אובייקט כפתור יחיד בעמדה התחתונה ("דרום") במיכל .

BorderLayout מפרש חוסר ציון מפורש של מיקום מחרוזת כ"מרכז". לרכיבי ה "צפון" "דרום" "מזרח" ו "מערב" נקבעים הגודל והמיקום עפ"י גודליהם המועדפים ולפי האילוצים של גודל המיכל. רכיב "המרכז" מקבל כל מרחב שנותר. בקשר לגודל המועדף אשר הוזכר למעלה, בהתאם ל exploring Java  מאת  Neimeyer & Peck:

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

לפי JavaAWT Reference by John Zukowski:

מתודת הgetPreferredSize() מחזירה את המימדים (רוחב וגובה) עבור הגודל המועדף של הרכיבים בתוך המיכל. המיכל קובע את הגודל המועדף עליו ע"י קריאה למתודה         preferredLayoutSize() של מנהל השרטוט הנוכחי אשר אומרת לכמה מרחב זקוק מנהל השרטוט כדי לארגן את הרכיבים. אם אתה אוכף מתודה זו , אתה אוכף את הגודל המועדף של ברירת המחדל.

למשל, מקטע הקוד הבא נלקח משיעור עוקב על Java Beans . Java Bean הוא רכיב הניתן לשימוש מחדש מאחר ובחובו מאפיינים ספציפיים מסוימים. במקרה זה, מתודת הgetPreferredSize()  של המחלקה אשר מגדירה את הjavaBean הופעלה על מנת לכונן את הגודל המועדף עבור אובייקט ה JavaBean להיות ריבוע, 50 פיקסלים בכל צד.

 

  //This method defines the preferred display size of the
   // bean object.
    public synchronized Dimension getPreferredSize(){
    return new Dimension(50,50);
  }//end getPreferredSize()

 

 

 

 

 

 

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

הדרך הכי ישירה לנקוב במנהל מערך היא להפעיל את מתודת הsetLayout() על אובייקט המיכל ולהעביר לה כפרמטר אובייקט של מחלקה אשר מיישמת את ממשק ה LayoutManager .

BorderLayoutהיא מחלקה אשר  מרחיבה אובייקט ומיישמת LayoutManager2. (אם הנך סקרן לגבי הפער המינימלי בין LayoutManager  ו LayoutManager2, יהיה זה תרגיל טוב לחפש זאת בתיעוד של 1.1 JDK).

התיעוד מגדיר את מתודת ה setLayout() כדלקמן

public void setLayout(LayoutManager mgr) 
    Parameters: mgr - the specified layout manager 

 

.

 

 

 

ל BorderLayout הבנאים הבאים .

 

BorderLayout() -- Constructs a new BorderLayout with no gaps between components.  

BorderLayout(int, int) -- Constructs a BorderLayout with the specified gaps. 

 

 

 

 

בנוסף, למחלקת ה BorderLayoutמתודות רבות כפי שנראה ברשימה הבאה. נתבונן בזוג מתודות שכזה בתכניות הדוגמא בשיעור זה. המונח שמופחת ערכו ((Deprecated ברשימה הבאה מציין מתודה ישנה מ 1.0 JDK אשר הוחלפה ע"י מתודה אחרת ב 1.1 JDK  ולא צריכה להיות יותר בשימוש. לכאורה, הפרשנות של מופחת ערך  היא כי המתודה עדיין נתמכת אך לא תקבל תמיכה ב עתידית כלשהי של JDK.

 AddLayoutComponent(component, object)-- מוסיפה את הרכיב הנקוב לשרטוט, תוך שימוש באובייקט האילוץ הנקוב.

AddLayoutComponent(string,component) --  Deprecated מוחלפת  ע"י               AddLayoutComponent(component,object)  .

 -- GetHgap()מחזירה את הפער האופקי בין רכיבים.

GetLayoutAlignememtX(container) -- מחזירה את  היישור לאורך ציר x.

GetLayoutAlignememtY(container) -- מחזירה את  היישור לאורך ציר y.

GetVgap -- מחזירה את  הפער האנכי בין רכיבים.

 InvalidateLayout(container) -- פוסלת את השרטוט, מציינת כי אם מנהל השרטוט  הטמין או החביא מידע יש להיפטר ממנו.

LayoutContainer(container)  -- מיישר את המכל הנקוב.

MaximumLayoutSize(continer) -- מחזיר את ממדי המקסימום עבור שרטוט זה בהינתן הרכיבים במכל היעד הנקוב.

 MinimumLayoutSize (container)  -- מחזיר את ממדי המינימום הנחוצים לערוך את הרכיבים המכלים במיכל היעד הנקוב.

 PreferredLayoutSize(container)  -- מחזיר את הממדים המועדפים עבור שרטוט זה בהינתן הרכיבים במיכל היעד הנקוב.

 removeLayoutComponent(component)  -- מרחיק את הרכיב הנקוב מהשרטוט.

 setHgap(int)  -- מסדיר את הפער האופקי בין רכיבים.

 setVgap(int) -- מסדיר את הפער האנכי בין רכיבים.

  toString()-- מחזיר את הייצוג כמחרוזת של ערכי BorderLayout .

 

 08-11-03 / 21:04  עודכן ,  05-11-03 / 20:31  נוצר ע"י רונית רייכמן  בתאריך 
 חזרה - הקודםהבא - תכנית לדוגמא ל Plain Vanilla 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 9