» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
תוכנית דוגמא
דף ראשי  מתקדמים  טיפול באירועים ב- JDK 1.1 , בקשת המיקוד.  תוכנית דוגמא גרסה להדפסה

תוכנית דוגמא

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

דיון

התוכנית היא ארוכה למדי, אך גם חוזרת על עצמה במידה מה.

 

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

 

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

 

ברגע שתלמד את התחביר, תוכל לכתוב תוכניות נטולות טעויות.

 

אובייקט כפתור, אובייקט שדה טקסט, ואובייקט תווית ממוקמים באובייקט מסגרת.

 

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

 

עיבוד אירוע מיקוד

 

אובייקט מאזין מיקוד (focusListener) מאותחל ונרשם להאזין עבור אירועי focusGained()
ו-
focusLost() על גבי המסגרת והתווית. כאשר אירועים אלה מתרחשים, אובייקט מאזין המיקוד גורם לשינוי צבע של המסגרת או התווית על מנת לספק אינדיקציה ויזואלית לקבלת או אבדן המיקוד.

 

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

 

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

 

ב- JDK 1.0.2 ,סינון אירועים רק למעוניינים בהם אינו נקי אפילו בקירוב כמו בגרסה זו.

 

כאשר לתווית יש מיקוד(focus), צבע הטקסט שלה אדום. אחרת, צבע הטקסט שחור.

 

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

 

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

 

עיבוד אירועי עכבר

 

אובייקט מאזין עכבר מאותחל ונרשם להאזין עבור אירועי mousePressed() ברמה נמוכה על המסגרת והתווית. (ההערות לעיל המתייחסות לסינון אירועים נכונות גם כאן).

 

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

 

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

 

עיבוד אירועי מקלדת

 

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

 

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

 

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

 

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

 

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

 

עיבוד אירועי חלון

 

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

 

נתינת שם אוטומטית לרכיבים

 

בכל פעם שאובייקט ממחלקת רכיב מאותחל, ניתן לו באופן אוטומטי שם רכיב.

 

ניתן לגשת לשם זה תוך שימוש בפונקצית getName() של מחלקת רכיב, וניתן לשנותו תוך שימוש בפונקצית setName() של מחלקת רכיב.

 

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

 

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

 

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

 08-12-03 / 19:27  עודכן ,  17-10-03 / 23:50  נוצר ע"י רונית רייכמן  בתאריך 
 טיפול באירועים ב- JDK 1.1 , בקשת המיקוד. - הקודםהבא - רישום תוכנית 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 6