PANEL וTHREAD - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

PANEL וTHREAD


ה*לה

Recommended Posts

  • תגובות 54
  • נוצר
  • תגובה אחרונה

משתתפים בולטים בדיון

משתתפים בולטים בדיון

מצורף הקובץ של התכנית:

Clock זהו CLASS לייצוג שעון

TikTak זה השעון הפנימי

Time פונקציות של השעון

Event64 שולח הודעות

Main התכנית הראשית.

אני רוצה ליצור שעון שעובד:

אם לוחצים על MODE אז הוא עובר למצב כיוון דקות (בעזרת SELECT)

MODE שני מצב כיוון שעות

MODE שלישי מצב כיוון דקות לשעון מעורר

MODE אחרון מצב כיוון שעות לשעון מעורר

לחיצה נוספת על MODE תבטל את השעון מעורר

בכל שלב לחיצה על UPDATE יגרום לסיום המסלול <אם רציתי רק לכוון את הדקות, לא נצטרך ללחוץ עוד ארבע פעמים על MODE>

כרגע- UPDATE בכלל לא עובד לי וגם כיוון השעון המעורר

[attachment deleted by admin]

קישור לתוכן
שתף באתרים אחרים

הממ... למה יש לך ב TikTak.java

if(e.getSource()=="update")

ועוד הרבה כאלו גם של "select" את צריכה שהכל יהיה בלי המרכאות (אם זה לא מובן למה, את מוזמנת לשאול).

גם את יכולה להוסיף ב constructor של TikTak בסוף:

f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

אם אתה רוצה שהתוכנה תפסיק לפעול כשאת סוגרת את החלון.

קישור לתוכן
שתף באתרים אחרים

תודה!

<התבלבלתי עם הגרשיים בגלל המתודה getActinCommand שמקבלת את המחרוזת שעל הכפתור, למה זה לא עשה לי טעות?>

יש לי שתי שאלות:

1. איך אני יכולה לעשות שהשעון המעורר ירשום הודעה שהגיע הזמן <הבעיה היא אם עשית UPDATE לפני כיוון השעון המעוורר.> לעשות משתנה חדש?

2. יש אפשרות להוסיף ICON לקישוט? איך עושים את זה? אך אני שומרת את התמונה שאני רוצה במחשב? <באיזה קובץ? BMP? GIF?>

זוהי פונקציית כיוון השעון הACTIONLISTENER של הכפתורים


class kivun implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
switch(ection)
{
case 0:
{
if(e.getSource()==mode)
{
offer.setText("Enter mode for continue, select for kivun minute time, update to finish ");

kivnclock = new Time(t);
displayezer.setText(kivnclock.DisplayTimeClock());
displayezer.setForeground(Color.black);

select.setEnabled(true);
update.setEnabled(true);

ection = 1;
i=0;
}
break;
}

case 1:
{
if(e.getSource()==mode)
{
offer.setText("Enter mode for continue, select for kivun hour time, update to finish ");
t = kivnclock;

showtime.setText(t.DisplayTimeClock());
showtime.setForeground(Color.black);

kivnclock = new Time(t);

ection = 2;
}
else
if(e.getSource()==select)
{
kivnclock.kivunMinuteClockTime();
displayezer.setText(kivnclock.DisplayTimeClock());

showtime.setForeground(Color.white);

offer.setText("Enter mode for continue, select for kivun minute time, update to finish ");
}
else
if(e.getSource()==update)
{
t = kivnclock;

showtime.setText(t.DisplayTimeClock());
showtime.setForeground(Color.black);

displayezer.setText(" ");
displayezer.setForeground(Color.black);

offer.setText("Enter mode for begining kivun");

select.setEnabled(false);
update.setEnabled(false);

ection = 0;
}
break;
}

case 2:
{
if(e.getSource()==mode)
{
offer.setText("Enter mode for continue, select for kivun minute Alarm time");

t = kivnclock;

showtime.setText(t.DisplayTimeClock());
showtime.setForeground(Color.black);

kivnclock = new Time(t);
displayezer.setText("The Alarm Time is: "+kivnclock.DisplayTimeAlarm());
displayezer.setForeground(Color.black);


ection = 3;
}
else
if(e.getSource()==select)
{
showtime.setForeground(Color.white);

kivnclock.kivunHourClockTime();
displayezer.setText(kivnclock.DisplayTimeClock());

offer.setText("Enter mode for continue, select for kivun hour time, update to finish ");
}
else
if(e.getSource()==update)
{
t = kivnclock;

showtime.setText(t.DisplayTimeClock());
showtime.setForeground(Color.black);

displayezer.setText(" ");
displayezer.setForeground(Color.black);

offer.setText("Enter mode for begining kivun");

select.setEnabled(false);
update.setEnabled(false);

ection = 0;
}
break;
}

case 3:
{
if(e.getSource()==mode)
{
offer.setText("Enter mode for bitul Alarm time, select for kivun minute Alarm time, update to finish ");

displayezer.setText("The Alarm Time is: "+kivnclock.DisplayTimeAlarm());

ection = 4;

}
else
if(e.getSource()==select)
{
kivnclock.kivunMinuteAlarmTime();
displayezer.setText("The Alarm Time is: "+kivnclock.DisplayTimeAlarm());

offer.setText("Enter mode for continue, select for kivun minute Alarm time, update to finish ");
}
else
if(e.getSource()==update)
{
showtime.setText(t.DisplayTimeClock());
showtime.setForeground(Color.black);

displayezer.setText(" ");
displayezer.setForeground(Color.black);

offer.setText("Enter mode for begining kivun");

select.setEnabled(false);
update.setEnabled(false);

ection = 0;

}
break;
}
case 4:
{
if(e.getSource()==mode)
{
offer.setText("Enter mode for begining kivun.");

kivnclock.IpusTimeAlarm();
displayezer.setText("The Alarm Time is Butal!");

select.setEnabled(false);
update.setEnabled(false);

ection = 0;

}
else
if(e.getSource()==select)
{
kivnclock.kivunHourAlarmTime();
displayezer.setText("The Alarm Time is: "+kivnclock.DisplayTimeAlarm());

offer.setText("Enter mode for bitual Alarm time, select for kivun hour Alarm time, update to finish ");

}
else
if(e.getSource()==update)
{
showtime.setText(t.DisplayTimeClock());
showtime.setForeground(Color.black);

displayezer.setText(" ");
displayezer.setForeground(Color.black);

offer.setText("Enter mode for begining kivun");

select.setEnabled(false);
update.setEnabled(false);

ection = 0;

}
break;
}
}
}

קישור לתוכן
שתף באתרים אחרים

תודה!

<התבלבלתי עם הגרשיים בגלל המתודה getActinCommand שמקבלת את המחרוזת שעל הכפתור' date=' למה זה לא עשה לי טעות?>

[b']למיטב זכרוני getSource() מחזיר טיפוס מסוג אובייקט, כשמבצעים השוואת רפרנס == לאובייקט המחרוזת "blah" הוא יוצר אובייקט מסוג מחרוזית ובודק בזכרון האם מדובר באותו אובייקט (כתובת בזכרון). מכיוון שאין סיכוי, הביטוי תמיד יהיה שווה ל false (אבל הביטוי עדיין בר השוואה).

יש לי שתי שאלות:

1. איך אני יכולה לעשות שהשעון המעורר ירשום הודעה שהגיע הזמן <הבעיה היא אם עשית UPDATE לפני כיוון השעון המעוורר.> לעשות משתנה חדש?

לא הבנתי מה הבעיה כלכך... אפשר בלולאה הראשית היכן שאת מעדכנת את השעון לבדוק כל פעם האם השעה שווה לשעה במאורר, ואם כן לעשות משהו.

2. יש אפשרות להוסיף ICON לקישוט? איך עושים את זה? אך אני שומרת את התמונה שאני רוצה במחשב? <באיזה קובץ? BMP? GIF?>

את מדבר על ICON לתוכנית ? לכפתור או סתם תמונה לרקע ?

גם הפקודה stop() שאת משתמש בחוט כבר הוצאה משימוש, למה את לא שמה שם break במקום?

קישור לתוכן
שתף באתרים אחרים

1. השעון עזר שאני משתמשת בו הוא לכיוון השעון הפנימי וגם לכיוון השעון המעורר איך אני אדע שהKIVNCLOCK הוא השעון המעורר? או שכיוונתי את השעון?

2. ICON כתמונה לרקע. איך עושים?

3. לא ידעתי מה החלופה לSTOP...

קישור לתוכן
שתף באתרים אחרים

1. תבדקי לפי ה ection (ד"א זה אמור להיות action), אם את במצבים של שעון, תכווני את השעון, אם את המצב של מעורר תכווני את השעון מעורר.

2. http://forum.java.sun.com/thread.jspa?threadID=399177&messageID=1738549 לקראת הסוף, או פשוט תחפשי jframe adding background image או משהו כזה.

3. במקרה הזה לא כלכך צריך חלופה, כי ניתן לראות שאת פשוט עושה לולאה אינסופית שרצה. כאשר את רוצה שהיא תפסיק פשוט צריך לצאת ממנה.

קישור לתוכן
שתף באתרים אחרים

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

יש לי משתנה FLAG = 0 אם הגעתי לCASE 3 הוא משתנה ל1 (ובCASE 4 אחרי לחיצת MODE הוא מתאפס שוב)

זו הפונקצית שעון מעורר שכתבתי:


if(flag==1)
{
if(t.getTimeClock()==kivnclock.TimeToAlarm())
{
while(i<5)
{
displayezer.setText("Time kriat shma of shaharit!!!");
displayezer.setForeground(Color.red);

try
{
sleep(300);
}
catch(InterruptedException exce) {};

displayezer.setForeground(Color.yellow);

try
{
sleep(300);
}
catch(InterruptedException exce) {};

i++;
}
}

פונקצית GTTIME מחזירה מחרוזת של השעה, פונקציה TIMETO ALARM מחזירה מחרוזת של השעה הרצויה לצלצול (15 שניות אחרי השעה שבקשתי לכוון את השעון)

למה זה לא עובד לי?

קישור לתוכן
שתף באתרים אחרים

פשוט מאוד, בגלל t.getTimeClock()==kivnclock.TimeToAlarm()

ב Java אי אפשר לדרוס אופרטורים (כמו ב C++ למשל) והאופרטור == המשמעות שלו בהשוואה של 2 רפרנסים (במקרה זה ערכי החזרה של getTimeClock ו TimeToAlarm), היא האם 2 הרפרנסים מצביעים על אותו אובייקט בזכרון. אני מניח, שזה לא משאת רוצה לבדוק, ושגם בפועל זה לא נכון ולכן הוא אף פעם לא נכנס.

מה שאת צריכה לעשות זה באובייקט שהמתודות האלו מחזירות (אני מניח משהו מסוג Time או Clock), את צריכה לממש (לדרוס)מתודה בשם equals שמקבלת את האובייקט השני ומחזירה האם הם דומים או לא:

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals(java.lang.Object)

קישור לתוכן
שתף באתרים אחרים

עדיין לא הצלחתי .

מה לשנות???


if(flag==1)
{
if(t.TimeToAlarm()==true)
{
while(i<5)
{
displayezer.setText("Time kriat shma of shaharit!!!");
displayezer.setForeground(Color.red);

try
{
sleep(300);
}
catch(InterruptedException exce) {};

displayezer.setForeground(Color.yellow);

try
{
sleep(300);
}
catch(InterruptedException exce) {};

i++;
}
}

וזו הפונקציה:


public synchronized boolean TimeToAlarm()
{
if(timeAlarm.minute<45)
{
timeAlarm.minute = timeAlarm.minute+15;
}
else
{
timeAlarm.minute = timeAlarm.minute-45;
timeAlarm.hour = timeAlarm.hour+1;
}
if(timeClock==timeAlarm)
{
return true;
}
else
{
return false;
}
}

אני צריכה לשלוח לפונקציה משתנים???

(ועוד שאלה לא קשורה: איך אני עובדת בJAVA בסביבת ECLIPSE עם דיבגר?)

קישור לתוכן
שתף באתרים אחרים

א. תקראי את זה: http://leepoint.net/notes-java/data/expressions/22compareobjects.html

ב. הדיבגר מאוד מזכיר את זה של ויזואל, מה הבעיה ?

------------------

בקיצור, בתוך המימוש של Clock תוסיפי:

	public boolean equals(Object b) {
if (this == b) return true;
if (!(b instanceof Clock)) return false;
Clock check = (Clock)b;
return (hour == check.hour && minute == check.minute);
}

וגם:

	public int hashCode() {
return hour*100 + minute;
}

ובמקום השורה:

if(t.getTimeClock()==kivnclock.TimeToAlarm())	

תעשי:

if (t.getTimeClock().equals(kivnclock.TimeToAlarm()))

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...