חבילת Swing, תצוגה מקדימה של Pluggable Look and Feel
מבוא
שיעור זה נכתב במקור במרץ 1998 באמצעות התוכנה והתיעוד שבחבילות להורדה- JDK 1.1.3, JFC 1.1, ו- Swing 1.0.1. Swing 1.0.1 הייתה כלולה ב- JFC 1.1. גירסת ה- 1.0.1 בנויה כך שתהיה תואמת ל- JDK 1.1. גירסה חדשה של Swing מתוכננת להיות משולבת בעתיד עם JDK 1.2. יש לקוות שלא יהיו שינויים רבים ושהחומר של שיעור זה ימשיך להיות רלוונטי.
הקדמה
מספר שיעורים קודמים סיפקו מידע לגבי טיפול באירועים ב- JDK 1.1. אחד מהם הציג סקירה כללית אודות ה- Java Abstract Windows Toolkit (AWT). ה- AWT משמשת בג'אווה ליצירת Graphical User Interfaces (GUI) - ממשקי משתמש גרפיים.
בשיעור זה תינתן סקירה כללית על חלופה ל- AWT ליצירת GUIs - והיא Swing.
Swing מספקת סידרת רכיבים 'קלים' שניתן להשתמש בהם במקום הרכיבים ב- AWT , ולעיתים יש בכך יתרון. [עיין בשיעור אחר הדן בהבדל בין רכיבים 'קלים' (lightweight) ורכיבים 'כבדים' (heavyweight)]. בנוסף לכך מספקת Swing מספר רכיבים שאינם כלולים ב- AWT (מדי התקדמות, תיאורי כלים, עצים, תיבות משולבות, וכו'). ברמה מסוימת, ניתן להתייחס לרכיבי ה- Swing פשוט כתחליפים לרכיבי ה- AWT. אולם ברמה אחרת, רכיבי ה- Swing הם הרבה יותר מתוחכמים מרכיבי ה-AWT ממגוון סיבות. לדוגמה, רכיבי Swing הופכים מבנים נוספים של אירועים לזמינים, ומאפשרים לשנות את ה"תצוגה והתחושה" ("look and feel") של ה- GUI בזמן- הריצה.
אולי אף חשוב מכך, רכיבי ה- Swing בנויים באמצעות Model-View-Control (MVC), שיטה שהופכת אותם לבעלי עוצמה רבה יותר באופן משמעותי. מאוחר יותר יינתן שיעור על MVC. בקצרה, MVC הוא רעיון שלפיו פקודת בקרה אחת או יותר מספקת את הנתונים, מודל שומר אותם, ותצוגה אחת או יותר מציגה אותם. MVC תבנית עיצוב של OOD המומלצת ביותר עבור עיצוב של מערכות גדולות. באמצעות MVC ניתן לשנות את הפקד או התצוגה ללא הדרישה הנלווית לשנות את המודל.
אחד הגילויים החשובים של MVC לגבי רכיבי ה- Swing הוא האפשרות שניתנת לך לעצב את המראה שלהם לפי רצונך. נוהגים לכנות זאת Pluggable Look and Feel (PLAF) - Swing 1.0.1 כוללת שלושה יישומים שונים של PLAF:
· Motif
· Windows 95/NT
· מטאלי- Metal (JavaSoft)
ככל הנראה, ניתן יהיה ליצור "תצוגה ותחושה" של מקינטוש בקרוב. בנוסף, באפשרותך ליצור "תצוגה ותחושה" (L&F) בעצמך אם כך תבחר, אך ייתכן כי מאמץ התיכנות הכרוך בכך לא יהיה פשוט. לכן, אם אתה יוצר GUI באמצעות רכיבי Swing בלבד, אתה מאפשר ללקוח שלך להחליף יישומי L&F בזמן הריצה. תוכנית הדגמה שמציגה יכולות אלה תוצג בהמשך סעיף זה. כאשר אתה מוריד את Swing 1.0.1 , מגיעה עם התוכנית להורדה תוכנית להדגמה הנקראת SwingSet המדגימה את רוב רכיבי ה- Swing הזמינים. תוכנית זו גם מאפשרת לך להחליף את ה- L&F במהלך זמן הריצה. אם תריץ את התוכנית הזו תגלה הבדל חשוב נוסף בין Swing ו- AWT. בפרט, העובדה שרוב רכיבי ה- Swing הם מיכלים. פירוש הדבר, שהם יכולים להכיל רכיבים אחרים וגם להכיל תמונות. לכן, לא קשה ליצור רכיביGUI המכילים תמונות (כמו למשל סרגלי לחצנים עם סמלים) ב- Swing. על כל פנים, חלק גדול מהמידע שבספר זה יחזור על מידע שכבר נידון בהקשר ל- AWT. משום כך, הפעם התוכנית היא להעביר סדרת שיעורים שתדגיש את ההבדלים בין Swing ו- AWT, בהנחה שאתה כבר מבין את ה- AWT. לעיתים, כאשר אתה משנה את ה- L&F של GUI, התוצאה עשויה להפתיע אותך. לכן, חשוב שתהיה לך היכולת לבחון את ה- GUI שלך לגבי יישומי L&F שונים. מסיבה זו, נתחיל את הלימוד המעמיק שלנו בנושא Swing בהצגת תוכנית שבאמצעותה ניתן לבצע בדיקה כזו בקלות.