الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دورة تدريب رقم 2

مغلق
بدأه مجدي محمود في 19 فبراير 2005 · 26 رد · 5,803 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

-09

نريد ان نقوم بعمل دورة جديدة وهي كالتالي

المشروع الاول

=========

List,Form,TextBox,Alert,RecordStore,Timer

1- جاء اليك شخص واخبرك بانه لا يعرف في ال J2ME ويريد ان تبرمج له كتاب هو يعرف فقط الكتابة وانت عليك البرمجة وقال لك مواصفات الكتاب التي يريدها في البرنامج وهي عبارة عن الامور التالية يعني مواصفات البرنامج

اريد ان يكون اول ما ادخل الى البرنامج ان تكون هناك شاشة لحظية ويظهر فيها منتدى الفريق العربي للبرمجة وكمان بعدها يكون List وهذه ال List تحتوي على الامور التالية

اضافة صفحة

عرض الصفحات

حذف الصفحات

طبعا بالاضافة الى الازرار مثل عرض حفظ حذف وهكذا بامكانك وضع الازرار التي تريدها في حالة اختيار اضافة صفحة يتم حفظ الصفحة في عرض الصفحات وهكذا.

المشروع الثاني

=========

List,Form,TextBox,Alert,Timer,Canvas

2-او التالي تحويل اي فلاش حتى ولو كان بسيط الى MIDlet مش شرط يكون فلاش معقد يكون بسيط ومعبر في نفس الوقت وكمان الشاشة اللحظية لازم تكون موجودة ويكتب فيها مثلا هذه فلاش من انتاج فلان او فلان او صورة المهم الشاشة اللحظية تكون موجودة

Using Timer in J2ME

لكم الخيار في اختيار المشروع الابسط والذي تريدونه واحد من المشروعين يكفي

في حالة الانتهاء من مشروع معين ارجوا ارساله على jenin21@hotmail.com

اتمنى ان يتم الاشتراك والتفاعل لا فقط من اجل زيادة المواضيع واي سؤال تواجه فيه صعوبة في كلا المشروعين ضعوهه هنا وساقوم بالمساعدة واتمنى ان لا تخيبو املي وتحبطوني اتمنى المشاركة

مدة الدورة من 19-02-2005 الى 19-03-2005

-waf

تم تعديل هذه المشاركة بواسطة مجدي محمود في 22 فبراير 2005 في 18:37

لست متواجد بشكل يومي

#2

ممكن استفسر عن المشروع الثاني فانا لم افهم كيف يعني تحويل فلاش يعني قصدك الملف او اغلب الظن قصدك انه يعيد تصميم عرض الفلاش و لكن باستخدام الجافا اليس كذلك...

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#3
اقتباس
انه يعيد تصميم عرض الفلاش و لكن باستخدام الجافا اليس كذلك...

بالضبط هذا ما قصدته

لست متواجد بشكل يومي

#4

لعدم تعقيد الامور هناك اسلوب بسيط وسهل لا ستخدام الشاشة اللحظية وهو التالي

وال Timer يمكن استخدامها في ال Animation

display.setCurrent(Alert alert, Displayable nextDisplayable)

مثل هذا المثال

Alert al;
List l;
Display display;
public void startApp()

{
display =Display.getDisplay(this);
al = new Alert("Alert Title");
al.setString("....");
alt.setTimeout(1000);
l = new List("List Title",Choice.IMPLICIT);
l.append("....");
l.addCommand(cmdExit);
l.addCommand(cmdSel);
l.setCommandListener(this);
display.setCurrent(alt,l);
}

انا ملاحظ اني بناقش حالي :wacko:

تم تعديل هذه المشاركة بواسطة مجدي محمود في 25 فبراير 2005 في 16:48

لست متواجد بشكل يومي

#5

له يا مجدي احلى مناقشة انا و انت و لا يهمك

طيب ليش نستخدم تايمر مافي غير طريقة... انا عندي طريقة بس ما اعرف اذا هي المثالية

رح حطها المشاركة الجاي لاني مستجعل

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#6
اقتباس
انا ملاحظ اني بناقش حالي

ولو يا مجدي أنا معكم على الخط :lol: 00 بس مشغول شوي 00

و ناوي إن شاء الله أبدأ بالمشروع الأول00 بس الJBuilderعقدني لأنو ما عد أعرف وين بدي أحط الصورة بأي مجلد وما خليت مجلد يعتب علي وغير حطيت فيه الصورة هلي بدي أحطها وما كان يمشي الحال :(

علىKToolBar مشي الحال يعني حاولت بالأول اساوي بس برنامج يعرض الصورة بس بدون Timer وبعدين بدي أحط الTimer

بس على الJBuilderما عم يمشي الحال بنوب00

على كل الأحوال عم استنى بس أنزل Netbeans4 لحتى ابلش فيه من اول جديد لأنو طقيت من ال :blink: JBuilder

لا إله إلا الله العظيم الحليم,لا إله إلا الله رب العرش العظيم,لا إله إلا الله رب السموات ورب الأرض ورب العرش الكريم.

#7

ريحتوني :rolleyes:

رامي :

يوجد طريق ثاني لعمل Animation عن طريق() run و ()repaint بس لا زم يكون البداية

public class ....extends ...... implements Runnable

طارق :

طارق انا عندي Jcreator ولكن استخدمه للجافا فقط وكنت اضع الصورة في src وين بكون الكلاس موجود.

لست متواجد بشكل يومي

#8

لا طريقة ثانية معفنة شوي .. بس انا استخدمها اغلب الاحيان لانني كسلان و لا احب ان اكتب بالبداية

public class ....extends ...... implements Runnable

و ساعة او تايمر و هل الشغلات... مع انه التايمر انسب شئ

و سوف اضع طريقتي فقط للاطلاع مع انها ليست الطريقة النظامية

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#9

مجدي عملت متل ما قلت أنو Alert أسهل هيك من الTimer

ساويت كل شي بس بقيان الأهم وهو الRecord لنشوف شو بطلع معنا بس بكره أو شي يوم تاني لأنو ما عد أشوف قدامي من كتر النعس :blink: :blink:

لا إله إلا الله العظيم الحليم,لا إله إلا الله رب العرش العظيم,لا إله إلا الله رب السموات ورب الأرض ورب العرش الكريم.

#10

طارق بالنسبة الى عرض الصفحات استخدم Field من نوع String ومن ثم قم بعرض محتويات هذا ال Field واحدة تلو الاخرى .

لست متواجد بشكل يومي

#11

للاجهزة التي تدعم العربية الجوالات التي تدعم العربية.

ArabicBookMIDlet.zip

تم تعديل هذه المشاركة بواسطة مجدي محمود في 27 فبراير 2005 في 14:21

لست متواجد بشكل يومي

#12

هذا هو المشروع الاول الجار والجاد فقط :rolleyes:

للاجهزة التي تدعم اي لغة ما عدا العربية الجوالات التي لا تدعم العربية

BoolMIDlet.zip

تم تعديل هذه المشاركة بواسطة مجدي محمود في 27 فبراير 2005 في 14:21

لست متواجد بشكل يومي

#13

مجدي أنا حسب ما فهمت منك وبدي أعمل أنو كل ما افتح صفحة جديدة يعني افتح TextBoxواكتب فيه البيانات سوف احفظها ب Record خاص بهل الصفحة00

بعدين وقت بدي استرجع البيانات لح أعمل مصفوفة من TextField ومصفوفة أخرى منForm واربط كل TextField بForm واحدة 00 وأعرض محتويات كل Record ب TextField واحدة وهكذا00

ما بعرف هل ما أفكر به صحيح برأيك00

هي شغلة وفي شغلة تانية عم تصير معي انو محتويات الRecord وقت بسترجعها بتكون مكتوبة بطريقة غريبة00 هل السبب جهازي يا ترى أم الJBuilder فيه مشكلة 000

عقدني ال :blink: JBuilder بس المشكلة انو بحبه000

لا إله إلا الله العظيم الحليم,لا إله إلا الله رب العرش العظيم,لا إله إلا الله رب السموات ورب الأرض ورب العرش الكريم.

#14
اقتباس
مجدي أنا حسب ما فهمت منك وبدي أعمل أنو كل ما افتح صفحة جديدة يعني افتح TextBoxواكتب فيه البيانات سوف احفظها ب Record خاص بهل الصفحة00

ممكن يا طارق ولكن اذا اراد الشخص انه يخزن 100 صفحة ماذا ستفعل ?

اقتباس
بعدين وقت بدي استرجع البيانات لح أعمل مصفوفة من TextField ومصفوفة أخرى منForm واربط كل TextField بForm واحدة 00 وأعرض محتويات كل Record ب TextField واحدة وهكذا00

تحتاج فقط الى مصفوفة واحدة وهي String [] field واما الفورم وال TextBox فتحتاج فقط الى واحد ال TextBox للاضافة وتقوم بتخزينه على شكل صفحات. وتخزن كل ما يكتب في التكست بوكس في field مثلا الصفحة الاولى[ field[1 وهكذا وتقوم بعرض المحتويات في الفورم.

اقتباس
هي شغلة وفي شغلة تانية عم تصير معي انو محتويات الRecord وقت بسترجعها بتكون مكتوبة بطريقة غريبة00 هل السبب جهازي يا ترى أم الJBuilder فيه مشكلة 000

اذا كنت تقصد ان المعلومات المخزنة تظهر كمربعات فهذا لان wireless Toolkit لا يدعم العربية وتستطيع الكتابة فيها فقط بالاحرف الانجليزية لذلك قم بتنزيل الملف الي في هذه المشاركة

اقتباس
هذا هو المشروع الاول الجار والجاد فقط 

للاجهزة التي تدعم اي لغة ما عدا العربية

لست متواجد بشكل يومي

#15

لضيق الوقت المشروع الثاني قمت بعمل هذه الميدليت وهذا بسيط

Bird.zip

لست متواجد بشكل يومي

#16

كم أتمنى أن أقرأ شفرة هذا البرنامج!!

والبرنامج السابق! وجميع البرامج!!!

تم تعديل هذه المشاركة بواسطة أبومازن في 5 مارس 2005 في 00:35

#17

كانت دورة شيقة وممتعة .

تم تعديل هذه المشاركة بواسطة مجدي محمود في 16 مارس 2005 في 12:49

لست متواجد بشكل يومي

#18

هذه هو المشروع الاول

+++++++++++++

+++++++++++++

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.io.*;

public class BookMIDlet extends MIDlet implements CommandListener

{

/*
Author  : Majdi Ibrahim >> www.arabteam2000-forum.com
*/
List l;
Form f;
TextBox tb;
Display display;
String rsname ="BookDB";
RecordStore rs;
String [] field;

Command e  = new Command("Exit", Command.EXIT,0);
Command s  = new Command("Save",Command.ITEM,2);
Command b  = new Command("Main",Command.BACK,0);
Command sa = new Command("Select",Command.ITEM,1);
Command n  = new Command("Next",Command.ITEM,1);

int currentID,lastID,k=0;
Alert al;
public BookMIDlet()
	{
    display = Display.getDisplay(this);
    l       = new List("BookMIDlet",Choice.IMPLICIT);
   
	}

public void startApp()
	{ 
    l.append("Show Pages ",null);
    l.append("Add a Page ",null);
    l.append("Delete All Pages",null);
    l.addCommand(e);
    l.addCommand(sa);
    l.setTicker(new Ticker("This MIDlet programmed By >>MAJDI IBRAHIM"));
    l.setCommandListener(this);
    display.setCurrent(l);
	}

public void pauseApp(){}

public void destroyApp(boolean unconditional){}

public void AddTextBox()
   {
 tb = new TextBox("Add Page ","", 150, TextField.ANY);
 tb.addCommand(b);
 tb.addCommand(e);
 tb.addCommand(s);
 tb.setCommandListener(this);
 display.setCurrent(tb);
   }
public void showAlert(String w)
	{
  al = new Alert("Information");
  al.setString(w);
  al.setType(AlertType.INFO);
  al.setTimeout(Alert.FOREVER);
  display.setCurrent(al);
	}
public void showform(String fa,int j )

{
	f = new Form("Page "+j+"");
	f.append(fa);
	k++;
	if(k>=field.length-1)
     {
     f.removeCommand(n);
     }
     else {f.addCommand(n);}

	f.addCommand(b);
	f.setCommandListener(this);
    display.setCurrent(f);
   

}

public void commandAction(Command c,Displayable m)
   {
    if(c == e)
       {
           destroyApp(false);
           notifyDestroyed();
       }
    else if(c == b)
      { 
  k=0;
        display.setCurrent(l);
      }
	else if(c==sa ||  c==List.SELECT_COMMAND)
    {
   int temp = l.getSelectedIndex();
   
   switch(temp)
     {
   
   case 0 : try
           {  rs =RecordStore.openRecordStore(rsname,true);
                 if(rs.getNumRecords() == 0){showAlert("the Book ist empty");}
              else
      {
                           loadfromRecordStore();
         showform(field[k+1],k+1);
      }
      
   	 }
                    catch (RecordStoreException e){System.out.println("Cannot Open RecordStore");}
                    CloseRS();
        break;
  
   case 1 : AddTextBox();
         break;
   
   case 2 : deleteRS();
         break;
        }
    }
   else if(c==s)
     {
      saveEntry(tb.getString());
   display.setCurrent(l);
        }
  else if(c == n)
    {
       loadfromRecordStore();
    showform(field[k+1],k+1);
      
    }
   }
/***************** Save The TextBox as a Page ***************************/
public void saveEntry(String re)
{


  try
{ 

 rs = RecordStore.openRecordStore(rsname,true);
 byte [] data = re.getBytes();
 int len =data.length;
currentID = rs.addRecord(data,0,len);


 }
catch (RecordStoreException e) {
           System.err.println(e.toString());
       }
try
	{
        rs.closeRecordStore();
	}
catch (RecordStoreException e) {
           System.err.println(e.toString());
       }

}
/***************** End of The Method SaveEntry *******************************/
/****************  load from RecordStore       ******************************/

public void loadfromRecordStore()
{


try
{

rs = RecordStore.openRecordStore(rsname,true);
int num = rs.getNumRecords();
int lastID=rs.getNextRecordID();
field= new String[lastID];
int leng = field.length-1;
RecordEnumeration enu = rs.enumerateRecords(null,null,true); 
byte [] data = null; 
while(enu.hasNextElement()) 
 { 
  data = enu.nextRecord(); 
  String m = new String(data); 
  field[leng] =m; 
  leng--;
 } 

 }
catch (RecordStoreException e) {
           e.printStackTrace();
       }

 try
	{
  rs.closeRecordStore();
	}
catch (RecordStoreException e) 
{
System.out.println("Cannot close RecordStore");
 }

}
/*****************Close The Record Store ************/

public void CloseRS()
	{
	try
	{
     rs.closeRecordStore();
	}
      catch (RecordStoreException e) 
   {
      System.out.println("Cannot close RecordStore");
    }
	}
/*****************Delete The Record Store *********/
public void deleteRS()
{
try
	{
     rs.deleteRecordStore(rsname);
  showAlert("The Book was succesfully deleted");
	}
      catch (RecordStoreException e) 
   {
      System.out.println("Cannot close RecordStore");
    }
}
}

لست متواجد بشكل يومي

#19

هذه هو المشروع الثاني

+++++++++++++

+++++++++++++

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.io.*;
public class WhiteBird extends MIDlet  implements CommandListener

{
Command cmdExit  = new Command("Exit", Command.EXIT, 1);
Birds swc;
Display display;
Alert al;
Image img;

public WhiteBird() {
 display = Display.getDisplay(this);
 try
	{
 img = Image.createImage("/logo.png");
 al  = new Alert("Message");
 al.setString("This MIDlet programmed Ibrahim Majdi");
 al.setImage(img);
 al.setType(AlertType.INFO);
 al.setTimeout(Alert.FOREVER);
	}
catch(IOException e){System.out.println("Image was not found");}
}

public void startApp() {
swc  = new Birds(display);
swc.addCommand(cmdExit);
swc.setCommandListener(this);
display.setCurrent(al,swc);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) { 
        
}
public void commandAction(Command c, Displayable s)
{
	if (c == cmdExit)
         { 
           destroyApp(true);
           notifyDestroyed();
         }
}
}

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.io.*;

public class Birds extends Canvas implements  Runnable{

int  x = getHeight()/2;
int  y = getWidth()/2;
int width = getWidth();
int height= getHeight();
int m=x;
int a=y;
Display display;
Image img;
String [] words = {"/bird1.png","/bird2.png","/bird3.png","/bird4.png","/bird5.png","/bird6.png",
                "/bird7.png","/bird8.png","/bird9.png","/bird10.png","/bird11.png","/bird12.png",
                    "/bird13.png","/bird14.png","/bird15.png","/bird16.png","/bird17.png","/bird18.png",
    };
int  w = words.length;
int i = 0;
public Birds(Display display)
{
this.display =display;
}


  public void paint(Graphics g)
  {
  g.setColor (255,255,255);
     g.fillRect(0,0,getWidth(),getHeight());
     g.setColor (255,0,0);
  loadImage(words);
  g.drawImage(img,x,y,Graphics.HCENTER|Graphics.VCENTER);
     display.callSerially(this);
    
   }

  public void run()
  {
     
   
         try { 
      i=i+1;
    if(i>w-1){i=0;}
      Thread.sleep(10);
      repaint(); 
     
      }
        catch (InterruptedException e){}
     
  
  }
  
public void loadImage(String ImgName)
	{
   try
  {
          img =Image.createImage(ImgName);
  }
	catch(IOException e){System.out.println("Cannot load Image");}
	}
  

}

الصور موجودة في الملف المرفق

res.zip

لست متواجد بشكل يومي

#20

يعطيك ألف عافية.

ملاحظة في المشروع الأول:

الطريقة startApp سوف تقوم بزيادة أوامر القائمة لو جاء اتصال هاتفي وقت تشغيل البرنامج. (لم أجرب ذلك، لكن هذا ما فهمته من برنامجك) أنصح بوضع list.append في الصانع وليس في startApp.

#21

أخ مجدي، اكتشفت شيئا مؤخرا! استخدم UTF-8 لأن هذا هو المدعوم في أكثر الجوالات، أما UTF-16 فغير مدعوم إلا في القليل منها. مثلا جوالات السمبيان لا يوجد فيها إلا UTF-8. وقد قرأت أن هذا التشفير هو المنتشر في الجوالات. لذلك أنصح بتحديث البرنامج الذي يدعم العربي بجعله يشفر إلى UTF-8. ستظهر علامات غريبة في الجوالات التي لا تدعم UTF-16.

كما أظن أنك تستطيع عمل نسخة واحدة تعمل باللغتين العربية وغيرها باستعمال هذا التشفير، ولا تحتاج إلى عمل نسختين من البرنامج.

اكتشفت هذا وأنا أحاول إصلاح برامجي ....

أما عن جوالات السمبيان القديمة مثل 6600 وجوال الدمعة فلا يدعم الUTF كليا، وهذا سبب عدم ظهور العربية جيدا في تلك الجوالات مع أنها تدعم العربية.

#22

هذا هو الإصدار الثاني من برنامج المفكرة على الجوال،

حسب ظني أنه سيعمل على الجوالات التي تدعم العربية والتي لا تدعم أيضا!

البرنامج من إنتاج مجدي محمود.

طورت البرنامج بتعديل شيء بسيط وهو القراءة والحفظ بالعربية.

أرجو تجربية البرنامج الإصدار الثاني.

والشكر والتقدير لمجدي محمود.

src.zip

NoteBook.zip

تم تعديل هذه المشاركة بواسطة أبومازن في 21 أبريل 2005 في 20:29

#23

على فكرة لم يعمل NoteBook.zip عندي في جهازي الموتورلا قال خطا في ابليكيشن

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#24

ألم يذكر لك نوع الخطأ؟ هل اشتغل الإصدار الأول من البرنامج عندك؟ لم أعدل في شفرة البرنامج غير حفظ بيانات الكتب على UTF-8 لتقرأ العربية. وأضفت أيقونة للبرنامج. وأضفت معلومات للجاد كتبت بعضها بالعربي منها اسم المنتج وهو مجدي محمود!

هل تستطيع قراءة معلومات البرنامج قبل أن تشغله؟

#25

نعم استطيع قراءة المعلومات قبل تشغيله و لكن بعدها اقول له داون لود و ينزل و بعدها يكتب لي ان ستولينغ و فورا يظهر لي الرسالة السابقة و لا يكمل التنزيل يعني لا ينزله من الاصل.

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

هذا الموضوع مغلق.

مواضيع مشابهة