ה*לה פורסם 2007 בפברואר 12 Share פורסם 2007 בפברואר 12 יש לי תכנית המדמה שעון דיגיטלי. <יש שעון פנימי שאחרי SLEEP של שניה מעדכן את הזמן (שניה מייצגת דקה, דקה מייצגת שעה- כל שישים שניות מתחלפת דקה)>המשתמש יכול לכוון את השעון- אם הוא מכניס קלט 0 אז הוא מגיע למצב של כיוון הדקות אם הוא יכניס קלט 1 הוא יכול לקדם את הדקה (כדי להגיע לזמן הרצוי לו).אם יכניס שוב קלט 0 הוא יגיע למצב של כיוון השעה ואז על ידי הכנסת קלט 1 הוא יוכל לקדם את השעות עד השעה הרצויה לו.אם יכניס שוב קלט 0 הוא יגיע למצב התתחלתי. <אם במצב הזה מכניס קלט 1- לא קורה כלום.>אני צריכה ליצור לשעון הזה ממשק גרפי .יש לי FRMAE עם PANEL שמתקדם לפי הזמן- כמו שצריך.כדי להסתדר עם הקלט שהמשתמש יכניס הוספתי שני כפתורים MODE עבור מה שצריך להיות קלט 0 ו SELECT עבור מה שצריך להיות קלט 1 אבל -איך אני מסתדרת עם הACTIONLISTENER שלהם???זו התכנית עד עכשיו:CLASS לייצוג שעון:public class Clock { int hour; int minute; String time; public Clock() { hour = 0; minute = 0; } public Clock (Clock cl) { hour = cl.hour; minute = cl.minute; } public String print()//הדפסת השעה { if(hour<10) { if(minute<10) { time = "0"+hour+":0"+minute; } else { time = "0"+hour+":"+minute; } } else { if(minute<10) { time = hour+":0"+minute; } else { time = hour+":"+minute; } } System.out.println(time); return time; }}CLASS המכיל את הפונקציות של השעון:public class Time{ Clock timeClock; public Time() { timeClock = new Clock(); } public synchronized Clock getTimeClock() { return timeClock; } public synchronized int getHourTimeClock() { return timeClock.hour; } public synchronized int getMinuteTimeClock() { return timeClock.minute; } public synchronized String DisplayTimeClock() { return timeClock.print(); } public synchronized void kivunHourTimeClock() { if(timeClock.hour==23) { timeClock.hour=0; } else { timeClock.hour++; } } public synchronized void kivunMinuteTimeClock() { if(timeClock.minute==59) { timeClock.minute=0; kivunHourTimeClock(); } else { timeClock.minute++; } }[br]פורסם בתאריך: 12.02.2007 בשעה 20:16:11-המשך-CLASS לכיוון השעון:public class Kivun extends Thread{ Event64 mode, select, stop; Time clock; int ection = 0; public Kivun(Event64 m, Event64 s, Event64 st, Time shaon) { mode = m; select = s; stop = st; clock = shaon; start(); } public void run() { while(true) { switch(ection) { case 0: { while(true) { if(mode.arrivedEvent()) { mode.waitEvent(); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun hour time: "); clock.DisplayTimeClock(); ection = 1; break; } else if(select.arrivedEvent()) { select.waitEvent(); System.out.println("Enter 0 for continue: "); clock.DisplayTimeClock(); ection = 0; break; } else if(stop.arrivedEvent()) { stop.waitEvent(); System.out.println("end of ection"); System.out.println("Enter 0 for continue: "); ection = 0; break; } } break; } case 1: { while(true) { if(mode.arrivedEvent()) { mode.waitEvent(); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun minute time: "); clock.DisplayTimeClock(); ection = 2; break; } else if(select.arrivedEvent()) { select.waitEvent(); clock.kivunHourTimeClock(); clock.DisplayTimeClock(); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun hour time: "); break; } else if(stop.arrivedEvent()) { stop.waitEvent(); System.out.println("end of ection"); System.out.println("Enter 0 for continue: "); ection = 0; break; } } break; } case 2: { while(true) { if(mode.arrivedEvent()) { mode.waitEvent(); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun hour Alarm time: "); clock.DisplayTimeClock(); ection = 3; break; } else if(select.arrivedEvent()) { select.waitEvent(); clock.kivunMinuteTimeClock(); clock.DisplayTimeClock(); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun minute time: "); break; } else if(stop.arrivedEvent()) { stop.waitEvent(); System.out.println("end of ection"); System.out.println("Enter 0 for continue: "); ection = 0; break; } } break; } case 3: { while(true) { if(mode.arrivedEvent()) { mode.waitEvent(); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun minute Alarm time: "); clock.DisplayTimeAlarm(); ection = 4; break; } else if(select.arrivedEvent()) { select.waitEvent(); clock.kivunHourTimeAlarm(); // clock.DisplayTimeAlarm(); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun hour Alarm time: "); break; } else if(stop.arrivedEvent()) { stop.waitEvent(); System.out.println("end of ection"); System.out.println("Enter 0 for continue: "); ection = 0; break; } } break; } case 4: { while(true) { if(mode.arrivedEvent()) { mode.waitEvent(); System.out.println("The AlramClock be off"); System.out.println(""); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun hour time: "); ection = 1; break; } else if(select.arrivedEvent()) { select.waitEvent(); clock.kivunMinuteTimeAlarm(); // clock.DisplayTimeAlarm(); System.out.println("Enter what do you want to do- " + "0 for continue, 1 for kivun minute Alarm time: "); break; } else if(stop.arrivedEvent()) { stop.waitEvent(); System.out.println("end of ection"); System.out.println("Enter 0 for continue: "); ection = 0; break; } } break; } } } } }CLASS שעון פנימי:public class TikTak extends Thread implements ActionListener{ Time t; JFrame f; JPanel panel, center, south; JLabel showtime; JButton mode, select; TextField displayezer; public TikTak(Time cl) { t=cl; f = new JFrame("clock"); f.setSize(300, 210); panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setBackground(Color.green); showtime = new JLabel(); showtime.setFont(new Font("Helvectica",Font.PLAIN, 65)); displayezer = new TextField(5); displayezer.setBackground(Color.yellow); displayezer.setFont(new Font("Helvectica",Font.PLAIN, 18)); displayezer.setEditable(false); center = new JPanel(); center.setLayout(new BoxLayout(center,BoxLayout.Y_AXIS)); center.setBackground(Color.green); center.add(showtime); center.add(Box.createRigidArea(new Dimension (8,0)),BorderLayout.WEST); center.add(displayezer); mode = new JButton("mode"); mode.addActionListener(this); select = new JButton("select"); select.addActionListener(this); south = new JPanel(); south.setLayout(new FlowLayout()); south.setBackground(Color.green); south.add(mode); south.add(select); panel.add(center, BorderLayout.CENTER); panel.add(south, BorderLayout.SOUTH); f.add(panel); f.setVisible(true); start(); } public void run() { while(true) { showtime.setText(t.DisplayTimeClock()); try { sleep(500); } catch(InterruptedException exce) {}; t.kivunMinuteTimeClock(); } } public void actionPerformed(ActionEvent ev) { if(ev.getSource()==mode) { ???? } if(ev.getSource()==select) { ??? } }}EVENT64 שולח ומקבל הודעות.אני צריכה להציג את כיון השעה בתצוגה משנית ורק לאחר שסיימתי לעדכן את השעון .איך אני יוצרת שהכפתורים יקדמו את השעון???? קישור לתוכן שתף באתרים אחרים More sharing options...
dvir_dotan פורסם 2007 בפברואר 13 Share פורסם 2007 בפברואר 13 את צריכה לבנות מכונת מצבים פשוטה:מצב התחלתי -> מצב כיוון דקות -> מצב כיוון שעות -> מצב התחלתיבמצב כיוון דקות ומצב כיוון שעות את מציגה את התצוגה המשנית. במצבים האלו לחיצה על כפתור SELECT תשנה את הערך המתאים.את המצב הנוכחי תשמרי בתור משתנה ולפי הערך שלו תקבעי מה לעשות עם הלחיצות על SELECT.את התצוגה תעדכני במעברים בין המצבים.זהו, פשוט וקל.דותן קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 בפברואר 13 מחבר Share פורסם 2007 בפברואר 13 חן חן על העידוד שזה פשוט וקל.בעקרון התכנית עובדת כשהמשתמש מכניס קלט אני צריכה לבנות ממשק גרםי שבמקום להכניס קלט המשתמש ילחץ על BUTTON.מה שהסתבכתי הוא ביצירת מאזינים לכפתורים איך אני מקשרת בין הCLASSים שתתבצע אותה הפעולה בלחיצת כפתור כמו בהכנסת בקלט? קישור לתוכן שתף באתרים אחרים More sharing options...
dvir_dotan פורסם 2007 בפברואר 13 Share פורסם 2007 בפברואר 13 אפשר לחשוב על כמה פתרונות לעניין הזה. הנה אחד מהם, ה- ActionListener שלך צריך לדעת באיזה מצב המערכת נמצאת (דהיינו האם זה מצב קידום דקות, מצב קידום שעות או מצב כללי).לשם כך תוכלי להעביר לאובייקטים האלה את אובייקט ה-MODEL או לאחד את ה-MODEL עם ה-CONTROLLER.פסאודו קוד של האובייקט שיטפל בלחיצות על כפתור מוד:1. אם המערכת במצב כללי: עבור למצב עריכת דקות הצג תצוגה משנית חזור2. אם המערכת במצב עריכת דקות: עבור למצב עריכת שעות חזור3. אם המערכת במצב עריכת שעות: הסתר תצוגה משנית עבור למצב כללי חזורפסאודו קוד של האובייקט שיטפל בכפתור SELECT:1. אם המערכת במצב כללי חזור2. אם המערכת במצב קידום דקות קדם את מונה הדקות באחד חזור3. אם המערכת במצב קידום שעות קדם את מונה השעות באחד חזורכאמור, שני האובייקטים האלו יכולים להכיל רפרנס ל-MODEL או להיות ה-MODEL בעצמו.כמו שזה נראה לי נחוצות פה כמה מחלקות:1. מחלקה שתממש את ה-MODEL ותכיל את הלוגיקה של קידום השעון באופן אוטומטי וע"י קלט של המשתמש, המחלקה גם תכיל את מצב המערכת הנוכחי ותכיל פונקציות לשינוי מצב המערכת, קידום הדקות באחד וקידום השעות באחד2. 2 ACTION LISTENER אחד עבור כפתור ה-MODE והשני עבור כפתור ה-SECLECT שתיהן יכילו רפרנס ל-MODEL3. מחלקה שתצייר את הפאנל כולל התצוגה הראשית, המשנית והכפתורים - תכיל פונקציות להצגה והסתרה של התצוגה המשניתאם את ממש חרוצה אפשר גם לעשות DISABLE לכפתור של ה-SELECT שהמערכת לא נמצאת במצב שמאפשר את זה.דותן קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 בפברואר 18 מחבר Share פורסם 2007 בפברואר 18 האם ניתןלעשות שטקסט יופיע ויעלם (יהבהב) במשך זמן מסוים?עם TRY?איך עושים זאת? קישור לתוכן שתף באתרים אחרים More sharing options...
Component פורסם 2007 בפברואר 18 Share פורסם 2007 בפברואר 18 שימי טיימר שישנה את הצבע שלו משחור לצבע הרקע ולהיפך. קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 בפברואר 19 מחבר Share פורסם 2007 בפברואר 19 הסתבכתי.אני מעוניינת שהשעון ימשיך לדפוק כמו שצריך ותוך כדי אני אכוון שעון עזר ואז אעדכן את השעון הדופק.יש לי case 0 כניסה למצב כיוון שעון.case 1 כיוון דקות: אם אני לוחצת על mode אני עוברת לcase הבא, ואם על select אני מכוונת את הדקות של השעון עזר.case 2 כיוון שעות: אם אני לוחצת על mode אני עוברת מסיימת את תהליך הכיוון (צריכה להציג את השעה שכיוונתי את השעון עזר בשעון הראשי בshowtime), ואם על select אני מכוונת את השעות של השעון עזר. הבעיה שלי: כשאני עוברת לcase 2 השעון עזר מתעדכן לי לפי השעה של השעון הראשי (שהמשיך לדפוק) ואני רוצה שישאר כמו שהיה בcase הקודם.מה לתקן?public void actionPerformed(ActionEvent e) { switch(ection) { case 0: { if(e.getSource()==mode) { offer.setText("Enter mode to begining. "); select.setEnabled(true); ection = 1; i=0; } break; } case 1: { if(e.getSource()==mode) { i = 0; offer.setText("Enter mode for continue, select for kivun minute time: "); kivnclock = t; showtime.setForeground(Color.WHITE); displayezer.setText(kivnclock.DisplayTimeClock()); ection = 2; } else if(e.getSource()==select) { kivnclock.kivunMinuteTimeClock(); displayezer.setText(kivnclock.DisplayTimeClock()); offer.setText("Enter mode for continue, select for kivun minute time: "); } break; } case 2: { if(e.getSource()==mode) { offer.setText("Enter mode for continue, select for kivun hour time: "); displayezer.setText(kivnclock.DisplayTimeClock()); ection = 0; } else if(e.getSource()==select) { kivnclock.kivunHourTimeClock(); displayezer.setText(kivnclock.DisplayTimeClock()); offer.setText("Enter mode for finish, select for kivun hour time: "); } break; } קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 בפברואר 19 Share פורסם 2007 בפברואר 19 תנסי לשכפל את השעון שלך, ולא לעשות kivum = t קישור לתוכן שתף באתרים אחרים More sharing options...
~שירה פורסם 2007 בפברואר 19 Share פורסם 2007 בפברואר 19 . קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 בפברואר 19 Share פורסם 2007 בפברואר 19 מכיוון שזה לא מעתיק את השעון, אלא יוצר "קישור" אליו. אם תעשי משהו לאחד מהם, גם השני ישתנה. קישור לתוכן שתף באתרים אחרים More sharing options...
dvir_dotan פורסם 2007 בפברואר 20 Share פורסם 2007 בפברואר 20 שימי לב שיש data race במקרה של עדכון השעון בו זמנית ע"י ה-thread המעדכן אוטומטית וה-thread שלך.דותן קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 בפברואר 20 מחבר Share פורסם 2007 בפברואר 20 אתה יוכל להסביר קצת??? לא הבנתי מילה ממה שאמרת. קישור לתוכן שתף באתרים אחרים More sharing options...
עמיר פורסם 2007 בפברואר 20 Share פורסם 2007 בפברואר 20 יש בכלל את כל הקוד איפשהו בצורה מסודרת ורציפה ? קישור לתוכן שתף באתרים אחרים More sharing options...
ה*לה פורסם 2007 בפברואר 21 מחבר Share פורסם 2007 בפברואר 21 אני לא מצליחה לעשות שאחרי שאני מכוונת את השעון השעון המקורי יתעדכן לפ השעה שכיוונתירעיון? קישור לתוכן שתף באתרים אחרים More sharing options...
Ghosthunter פורסם 2007 בפברואר 21 Share פורסם 2007 בפברואר 21 הבעיה הקודמת הסתדרה? קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.