התכנית לדוגמה
קטע זה מציג דיון על התכנית ולאחריו מופיעה התכנית
הדיון
תכנית זו ממקמת אובייקט Scrollbar ואובייקט TextField במסגרת (Frame) . בכל פעם שהבועה ב-Scrollbar מוזזת
תוך שימוש באחת מ- 5 הדרכים הפיזיות להזזת הבועה הערך ((value של ה-scrollbar (שבד"כ מייצג את מיקום מרכז
הבועה) נשלף מאובייקט האירוע ומוצג באובייקט TextField (דרושים תיקונים אריתמטיים מסוימים כדי לגרום לערך לייצג
את מרכז הבועה משום שהערך המוחזר מייצג את הקצה השמאלי של הבועה ב-Scrollbar האופקי.
כמו כן בכל פעם שהבועה מוזזת פיסות מידע אחרות נשלפות מהאובייקט ומוצגות על המסך. זה כולל את הזיהוי של האובייקט הניתן להתאמה ואת סוג האירוע הניתן להתאמה.
שימו לב גם שלמרות ש-5 פרמטרים שונים של אתחול נכללים כפרמטרים בפונקציה הבונה (constructor) של Scrollbar
פרמטרים חשובים אחרים של אתחול כגון: BlockIncrement וכןUnitIncrement אינם נכללים ברשימת הפרמטרים,
הם חייבים להיקבע על ידי שימוש במתודות כגון: setBlockIncrement() .
ניסוי מראה שערך ברירת המחדל עבור BlockIncrement הוא 10 יחידות ועבור UnitIncrementהוא יחידה אחת.
כפי שהוזכר קודם האובייקט listner של Scrollbar אינו מוסף כ-ScrollbarListener אלא על ידי מימוש מנשק
AdjustmentListener ואחר כך מוסף כ- AdjustmentListener .
מנשק AdjustmentListener מצהיר רק על מתודה אחת שניתן "לדרוס אותה" adjustmentValueChanged().
מתודה זו מקבלת אובייקט מטיפוס AdjustmentEvent אשר מספק 4 מתודות להשגת מידע על האירוע.
* מתודת getAdjustable() של המחלקה AdjustmentEvent מחזירה מידע המכיל את זיהוי האובייקט שיצר את
האירוע.
* מתודתgetAdjustmentType() מחזירה מידע המכיל את זיהוי סוג האירוע (לחיצה על כפתור ה-Scrollbar,
גרירת העכבר וכו').
* מתודת paramString() מכילה מידע שחופף במידה מסוימת עם שתי המתודות הקודמות.
* מתודת getValue() מחזירה את הערך המיוצר על ידי ה- adjustment.
3 מתוך 4 המתודות הנ"ל נמצאות בתכנית הבאה, paramString() לא נמצאת.
יש הרבה הערות חשובות בתכנית הבאה אשר מוסיפה לדיון הזה, במיוחד לגבי באגים במרכיב ה-Scrollbar , והתאמות
אריתמטיות הנדרשות כדי לפצות על רוחב הבועה.