עבור לתוכן

PANEL וTHREAD

Featured Replies

פורסם
  • מחבר

כן! תודה. עשיתי NEW לKIVUNCLOCK

ועכשיו ?

  • תגובות 54
  • צפיות 6.9k
  • נוצר
  • תגובה אחרונה

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

פורסם

ב- case 2 בif הראשון. איפה את מעדכנת את השעון הגדול שיתעדכן להיות שעון העזר שיצרת?

פורסם
  • מחבר

כן, נכון אבל מה לעשות כדי לעדכן אותו??

    t = kivunclock        

או שוב לעשות NEW?

פורסם

את יכולה לנסות את שניהם ולראות מה כל אחד עושה.

פורסם

אם את רוצה שאנסה לעזור, את מוזמנת לפרסם את כל הקוד מחדש ובאופן מסודר (עדיף אפילו באיזה אתר PASTEBIN ולשים את הלינקים פה), ולהסביר מה הבעיה הנוכחית.

פורסם
  • מחבר

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

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()))

ארכיון

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

דיונים חדשים