עזרה בג'אווה- שוב...

עזרה בג'אווה- שוב...

שלום לכולם! שוב נתקעתי... 1. בעניין ToolTip- להוסיף כזה לרכיב זו לא בעיה. הבעיה היא שאני רוצה לשלוט על משך הזמן שהוא מוצג. הבנתי שאפשר לעשות את זה באמצעות ה- toolTipManager- אבל לא הבנתי איך משתמשים במחלקה הזו, בהתחשב בעובדה שאני לא יכולה להשתמש בקונסטרקטור שלה... בנוסף, נניח שעשיתי לרכיב setToolTip- איך עכשיו אני מקשרת את זה ל- toolTipManager? 2. יש איזושהי דרך שבאמצעותה אני יכולה לבטל את כפתור הסגירה של JFrame שיצרתי? (אני יודעת שיש מתודה כזאת עבור JInternalFrame. מה עם JFrame רגיל?) המון תודה!!!
 

desertboy

New member
---->

1) ככה : ToolTipManager.sharedInstance().registerComponent שמקבלת 2) תסתכלי על הממשק WindowListener ועל המתודה של addWindowListener.
 
לא הבנתי...

האמת, הבנתי, אבל חלקית... בעניין הToolTip אתה ואלדד עזרתם לי מאוד- תודה! אבל בעניין סגירת החלון.. ניסיתי (כבר קודם) להשתמש במחלקה שהזכרת, במתודה windowClosing- אבל היא שולטת על מה שקורה ב- console window אחרי שלחצתי על X- כלומר, האפליקציה עצמה נסגרת בכל מקרה--- איך אני גורמת לכך שהמחשב לא יבצע כלום במקרה כזה? (עדיף שבכלל לא תהיה את האופציה של X...) שוב תודה!
 
הסתדרתי, תודה!

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

desertboy

New member
--->

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

voguemaster

New member
תשופות

לגבי השאלה הראשונה:
Toolkit.getDefaultToolkit().getScreenSize(); Toolkit.getDefaultToolkit().getScreenResolution();​
זה פחות או יותר מה שצריך. לגבי ב' - יש מה שנקרא ComponentAdapter ואפשר להשתמש בו כך:
f.addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e) { )); } });​
 
ממש תודה! ועכשיו- בעיה ממש חמורה...

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

voguemaster

New member
באיזה הקשר ?

כלומר, לאיזה פקד יש את הפוקוס של המקלדת כשנלחץ הרווח ? אולי לראות קצת קוד לא יזיק..
 

DadleFish

New member
לגבי ToolTipManager

המחלקה הזו משתמשת ב-design pattern הנקרא Singleton. ממליץ לך בחום להכיר את התבנית הזו שכן היא מאוד שימושית. זו שיטה טובה לאפשר קיום של instance אחד בלבד מה-class הזה - בשימוש נרחב בעיקר ב-Managers למיניהם. לענייננו, אם תסתכלי על התיעוד של ToolTipManager תראי שיש שם כל מיני פונקציות שרלוונטיות למה שאת צריכה. בין השאר יש את RegisterComponent שהוזכרה פה - צריך להשתמש בה תחילה כדי לרשום את ה-ToolTip שאת רוצה להשפיע עליו, ולאחר מכן לשחק עם הזמנים בעזרת הפונקציות האחרות. מה שמעניין אותך זה ה-Dismiss Delay. אגב, ספר טוב ל-Design Patterns הוא עוד ספר חינמי של ברוס אקל, שנקרא Thinking in patterns with Java. מומלץ בחום - ויש שם גם דוגמאות ב-JAVA.
 
למעלה