הרצאה מספר: #07 GUI components רכיבים נוספים חלק ג' תכנות ג'אווה + אינטרנט JAVA & WEB PROGRAMMING צבי מלמד מכללת הדסה/מכללה חרדית כל הזכויות שמורות 1
המחלקה JOptionPane אפליקציות רבות משתמשות ב- dialog boxes למטרת אינטראקציה עם המשתמש למשל: "למחוק את הקובץ? כן / לא / בטל המחלקה JOptionPane מספקת מספר אפשרויות מוגדרות מראש לדיאלוגים ההפעלה על ידי קריאה למתודות סטטיות 2
- דיאלוג בסיסי ch14_2 jhtp GUI היכנסו לתיקייה המתאימה הריצו את הפקודה java Addition סקרו את הקוד של הדוגמא היכנסו לתיעוד JAVA וחפשו את המחלקה Class JOptionPane קראו בקצרה את ההקדמה של כל אחת מהמחלקות בהיררכיה שקודמת למחלקה זאת דוגמה אחרת להרצה: GUI_01_JOptionPane 3
המחלקה JOptionPane המארז: javax.swing המחלקה מספקת dialog boxes באמצעות מתודות סטטיות הנדסת אנוש: תיבות-הדיאלוג לא מאפשרות למשתמשים לעבוד עם האפליקציה כל עוד הן פתוחות. לעתים קרובות הן "מעצבנות" יש למעט בשימוש בהן להשתמש רק כשאתה אכן רוצה למנוע מהמשתמש את המשך האינטראקציה עם האפליקציה 4
- דיאלוג בסיסי ch14_2 jhtp GUI 5
המחלקה JOptionPane המחלקה מספקת קבועים להצגת אייקונים בתיבת הדו-שיח 6
Message Dialogs Message Dialogs באמצעות showmessagedialog שהיא פונקציה סטטית של JOptionPane ארגומנט ראשון: מיקום החלון. אם NULL אז באמצע המסך ארגומנט שני: הטקסט של ההודעה להציג ארגומנט שלישי: הכותרת של החלון titel bar ארגומנט רביעי: איזה סוג הודעה להציג. משתמשים בקבועים של המחלקה כגון YES_NO_OPTIONאו YES_NO_CANCEL_OPTION JOption-Pane.PLAIN_MESSAGE גורם לכך שלא מוצג ICON משמאל להודעה 7
הצגה של טקסט ותמונות דוגמא 14_06_07 8
הצגה של טקסט ותמונות דוגמא 14_06_07 9
יצירת Icon בד"כ על ידי העברתו כארגומנט לקונסטרקטור או למתודה seticon() Icon הוא אובייקט של מחלקה שמממשת את הממשק Icon במארז javax.swing. ImageIcon (package javax.swing) supports several image formats, including Graphics Interchange Format (GIF), Portable Network Graphics (PNG) and Joint Photographic Experts Group (JPEG). 10
גיבוי getclass().getresource("bug1.png") Invokes method getclass (inherited indirectly from class Object) to retrieve a reference to the Class object that represents the LabelFrame class declaration. Next, invokes Class method getresource, which returns the location of the image as a URL. The ImageIcon constructor uses the URL to locate the image, then loads it into memory. The class loader knows where each class it loads is located on disk. Method getresource uses the Class object s class loader to determine the location of a resource, such as an image file. Copyright 1992-2012 by Pearson Education, Inc. All Rights Reserved.
גיבוי A JLabel can display an Icon. JLabel constructor can receive text and an Icon. The last constructor argument indicates the justification of the label s contents. Interface SwingConstants (package javax.swing) declares a set of common integer constants (such as SwingConstants.LEFT) that are used with many Swing components. By default, the text appears to the right of the image when a label contains both text and an image. The horizontal and vertical alignments of a JLabel can be set with methods sethorizontalalignment and setverticalalignment, respectively. Copyright 1992-2012 by Pearson Education, Inc. All Rights Reserved.
גיבוי
כפתורי מצבים 17
JButtons ButtonGroup ActionEvent מייצר JButton state-button JCheckBox, JRadioButton יש להם מצבים של on/off true/false מייצרים ItemEvent מתודת האזנה: itemstatechanged לקבל ערך נוכחי: isselected Deitel 14_17 JRadioButton מוחזקים יחדיו על ידי אובייקט add() להוספת כפתור לקבוצה Deitel 14_19 18
JRadioButton 23 יוצרים כפתורים מוסיפים אותם למחלקה )שיורשת מ )Jframe יוצרים ButtonGroup מוסיפים את הכפתורים ל- ButtonGroup מוסיפים מאזין לכל כפתור צבי מלמד כל הזכויות שמורות.1.2.3.4.5
JRadioButton יוצרים כפתורים מוסיפים אותם למחלקה )שיורשת מ )Jframe יוצרים ButtonGroup מוסיפים את הכפתורים ל- ButtonGroup מוסיפים מאזין לכל כפתור מגדירים )כותבים( את המחלקה RadioButtonHandlerשמממשת ItemListener.1.2.3.4.5.6 24
JRadioButton מגדירים )כותבים( את המחלקה ItemListener RadioButtonHandlerשמממשת.6 25
JComboBox 26
JComboBox מערך names ישמש ליצירת ה- combo יצירת ה- icons 27
JComboBox ה- listener הוא מחלקה אנונימית 28
JComboBox יוצרים מערך של ערכים ל-קומבו names יוצרים מערך של אייקונים להציג, בהתאמה במאזין המתודה getstatechangeמזומנת כשיש בחירת ערך חדש המתודה של האירוע מטיפוס getstatechange - ItemEvent מחזירה את סוג השינוי. במקרה שלנו: ItemEvent.SELECTED המתודה של הקומבו - getselectedindexמחזירה את האינדקס שנבחר, ומשתמשים בו לפי הצורך setmaximumrowcount להגדרת כמה פריטים להציג כאשר המשתמש לחץ על הרכיב. מייצר פס גלילה אם יש יותר רכיבים..1.2.3.4.5 29
JList JList משמש לבחירה שהמשתמש יכול לבחור ממנה מייצר ListSelectionEvents ברשימה שבוחרים איבר אחד 24_14 Deitel בחירת צבע מתוך רשימת צבעים מתודת האזנה: itemstatechanged setvisiblerowcountלהגדרת כמה פריטים להציג setselectionmode המחלקה לקבוע את אופן הבחירה ListSelectionModel SINGLE_SELECTION SINGLE_INTERVAL_SELECTION MULTIPLE_INTERVAL_SELECTION )בודד או מרובה( קובעת את מוד הבחירה 30
JList המאזין הוא מהמחלקה ListSelectionListener ובהתאמה addlistselectionlistener כאמור - setvisiblerowcountלהגדרת כמה פריטים להציג... אבל אם יש יותר פריטים ממספר השורות לא מוסיף אוטומטית scroll-bar אז מה עושים? מוסיפים )בעצמנו( JScrollPane 31
עוד על אירועי עכבר ממשקים MouseListener and MouseMotionListener לאירועי עכבר על כל רכיב GUI שהוא. הממשק MouseInputListener )במארז: )javax.swing.event מרחבי את שני הממשקים הנ"ל ויוצר ממשק אחד שמכיל את המתודות של שניהם 35
עוד על אירועי עכבר 36
טיפול באירועי עכבר המתודות שמטפלות באירועי עכבר מקבלות אובייקט מטיפוס MouseEvent שמכיל את המידע על האירוע, כולל הקואורדינטות של האירוע (0,0) פינה שמאלי עליונה של האובייקט GUI שעליו התרחש האירוע מתודות וקבועים של המחלקה InputEvent )שהיא מחלקת על של )Mouse-Event s מאפשרים לדעת איזה כפתור נלחץ 39
תיקייה: שורת ההרצה: תרגיל דוגמא לאירועי עכבר: MouseDrag or GUI_02_MouseDrag C:\Dropbox\workspaces\workspace\java-A\bin java gui_demo.mousedrag pink-mouse-md.png 40
MouseTracker 41
MouseTracker 42
MouseTracker 43
MouseTracker 44
MouseTracker 45
MouseTracker 46
Adapter Class 47
תזכורת מחלקות Event-Adapter
טיפול במקשים Key Event Handling הממשק KeyListenerמגיב על אירועי מקלדת המתודות שהוא מממש: keyreleased, keypressed, keytyped keytyped מגיבה )נקראת בתגובה( ללחיצת מקש שאיננו )ENTER )כגון action-key הן מקבלות אירוע KeyEvent קבלת ערך המקש: getkeycode קבלת מחרוזת שמתארת את המקש: getkeytext קבלת ערך UNICODE של המקש: getkeychar האם זה היה כפתור פעולה: isactionkey 52
טיפול במקשים Key Event Handling )המשך( המתודה getmodifiers מחזירה אם נלחץ CNTL SHIFT וכו' getkeymodifierstext לקבלת שמות המקשים שנלחצו מתודות של InputEvent שהיא מחלקת העל של KeyEvent ששימושיות כאן: iscontroldown, isaltdown, ismetadown, isshiftdown דוגמא 14_36 deitel 53
בדיקה אם Meta-key נלחצו לצורך ההדגמה )ושלא לצורך המחשבון(... כיצד נבדוק אם כפתור META )כלומר: CNTL, )ALT, SHIFT, נלחץ? למשל, לבדוק אם המשתמש הקיש A+CNTL if (event.getkeycode() == 'A' && (event.getmodifiers() & InputEvent.CTRL_MASK)!= 0) {............ } CNTL וגם ALT נלחצו: if ((event.getmodifiers() & (Event.ALT_MASK Event.CTRL_MASK))!=0) {............ } בכדי לבדוק אם או... if ((event.getmodifiers() & InputEvent.CTRL_MASK)!= 0) && event.getmodifiers() & InputEvent.ALT_MASK)!= 0) ) {............ } 54