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

 

JDK 1.1  הופץ רשמית ב 18 לפברואר 1997 . שיעור זה  נכתב ב 21 לפברואר 1997 כשהוא מתבסס על התוכנה הנמצאת ב JDK 1.1 . מספר באגים פוטנציאליים ביכולות ה- MouseMotion  של JDK  ל Win95  אותרו במהלך הכנת שיעור זה.

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

כאשר דנו בשיעור קודם בהליכי שימוש בעכבר  לא לקחנו בחשבון שיש בעצם שני ממשקי עכבר שונים:

 

-                               MouseListener.

-                                MouseMotionListener.

 

בשיעור אז דנו בשיטות יישום שונות לממשק ה MouseListener .

בשיעור זה ניישם גם שיטת ה mouseDragged()  וגם את שיטת ה mouseMoved() . בתוך ממשק ה MouseMotionListener בכדי ליישם תוכנית הלוקחת אובייקט מסוג Label ושמה אותו על אובייקט מסוג Panel ע"י גרירת אובייקט ה Panel בעזרת העכבר.

שיעור זה לא נועד לשמש כהדגמה כיצד יש לבצע גרירה( drag and drop ) בצורה מושלמת. שיעור זה בא בכדי לתאר כיצד יש לרשום, לקרוא, להמתין וליישם תהליכים המוכרזים בתוך יישומי ממשק ה MouseMotionListener .

בשיעור זה נשתמש גם ביישום mousePressed()  השייך לממשק ה MouseListener .

 

 

סקירה כללית

 

 

ממשק ה MouseMotionListener מכריז על שני תהליכים:

 

 

  • public abstract void mouseDragged(MouseEvent e) 
  • public abstract void mouseMoved(MouseEvent e) 

 

תהליך ה mouseDragged מתבצע אך ורק כאשר העכבר נלחץ מעל רכיב מסוים ומתבצעת גרירה.

       לפי  הדוקומנטציה ימשיך הליך ה mouseDragged להתבצע כל עוד לא שיחררנו את כפתור העכבר ( כאשר אין חשיבות למיקום העכבר , והאם הוא עדיין בתחומי הרכיב הנבחר)

      אף-על-פי-כן , כאשר  אנו מנטרלים, בדוגמא הבאה,  את הקוד האחראי לגרירת אובייקט ה Label, ומסתכלים בפלט  על המסך, אפשר לראות שהליך ה mouseDragged מפסיק לרוץ כאשר הוא יוצא מתחום של he 1000 מגבולות האוביקט שעליו ה listener ביצע מעקב. נוסף על כך החזרת העכבר לתוך תחומי האובייקט לא גורמת לו לחדש את התנועה אלא אם נשחרר את כפתור העכבר ונלחץ בשנית.

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

הליך ה MouseMoved()  מתעורר כאשר העכבר נמצא מעל רכיב מסוים (אך לא מתבצעת לחיצה). הצהרת System.out.println()  אשר בתוך הליך ה - MouseMoved() מצבעה לנו על שורה של התרחשויות המתרחשות כאשר העכבר נכנס לתוך תחומי התווית, ומפסיקות להתבצע כאשר העכבר יוצא מתוך תחומי התווית. ההתרחשויות ייתבצעו מחדש במידה והעכבר יכנס שוב לתחומי התווית.

 

 18-10-03 / 00:35  נוצר ע"י רונית רייכמן  בתאריך 
 חזרה - הקודםהבא - תוכנית הדוגמה 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 7