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

نبذة سريعة عن ال Java ME و شرح برنامج عملى

بدأه Mahmoud Kelany في 11 أغسطس 2010 · 38 رد · 13,893 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#26

مممممممممممممممم

يالنسبة أني أتعلم JavaMe كان لي تجربة معاها زي العسل وأنتا عارفها :(

بالنسبة لموضوع objective c أنا كنت أحسبها لـ symbian جيد أن يجد المرء من يقومه

أخيراً بطل يا هويدي تخرب المواضيع تبعت الناس laugh.giflaugh.giflaugh.gif قال ماك قال tongue.gif

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#27

شوف, إنتا كنت فاكر إن Objective-C لل symbian لولا أنا إتدخلت في الوقت المناسب :P

#28
علاء الصالحي كتب:

مممممممممممممممم

يالنسبة أني أتعلم JavaMe كان لي تجربة معاها زي العسل وأنتا عارفها :(

بالنسبة لموضوع objective c أنا كنت أحسبها لـ symbian جيد أن يجد المرء من يقومه

أخيراً بطل يا هويدي تخرب المواضيع تبعت الناس laugh.giflaugh.giflaugh.gif قال ماك قال tongue.gif

تحياتي

ولماذا لا تحاول من جديد ؟؟

كويس ان المعلومه عندك تم تصليحها

هههههههههههههههههههه معلش بس هو عاوز يشتغل لكن فيه ناس حاولت و لا تريد المحاوله مره اخرى :P :P

هويدي كتب:

شوف, إنتا كنت فاكر إن Objective-C لل symbian لولا أنا إتدخلت في الوقت المناسب :P

اكيد طبعا التدخل فى الوقت مناسب جميل اوووى

وبعدين خليكوا كويسين مع بعض اصل اعمل حظر تجول هنا :P :P

:lol: :lol: :lol: :lol:

هويدى :) علاء :)

Software Developer
Mahmoudkelany.com


 

#29

ومن قال أنك غير مفيد يا هويدي

لكني مازلت مصر على أنك خربت الموضوع wink.gifwink.gif قال ماك قال tongue.gif

مشكلتي معها ليست مشكلة برمجية

مشكلتي معها كانت في نقص دعم الشركات لها بتوفير API

كدت أفقد المادة التي كنت أعمل عليها في الفصل السابق من أجل هذه المشكلة

على كل ليست لدي أدنى مشكلة في العمل عليها من جديد

لكن ليس لأغراض التعلم :lol:

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#30
علاء الصالحي كتب:

ومن قال أنك غير مفيد يا هويدي

لكني مازلت مصر على أنك خربت الموضوع wink.gifwink.gif قال ماك قال tongue.gif

مشكلتي معها ليست مشكلة برمجية

مشكلتي معها كانت في نقص دعم الشركات لها بتوفير API

كدت أفقد المادة التي كنت أعمل عليها في الفصل السابق من أجل هذه المشكلة

على كل ليست لدي أدنى مشكلة في العمل عليها من جديد

لكن ليس لأغراض التعلم :lol:

تحياتي

مش قولنا العبوا مع بعض

امممم كانت اصدارات قديمه من الموبيلات فلذلك لم يكن هناك الدعم الكافى

دا انت باين عليك مجرب من زمان :lol: :lol:

لا جرب دلوقتى كل حاجه تعتبر بقت متاحه

يا اخى اغراض التعلم ولا لا

بس المهم تشتغل

وبعدين لو مش لاغراض التعلم

ارنا همتك فى ايجاد مشروع فكرته جديده وجذابه وقم بتطبيقها

وبعد كدا تصبح مليونير :P :P

بس انت اشتغل بس وربنا يوفققك :)

Software Developer
Mahmoudkelany.com


 

#31

لا يا محمود مش بعيدة كثير

تجربة قريبة جداً وتجربة أسود من قرن الخروب :(

لو حبيت أجرب فهجرب على android

لأنه على حسب توقعاتي سيسطر في فترة قريبة :)

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#32
علاء الصالحي كتب:

لا يا محمود مش بعيدة كثير

تجربة قريبة جداً وتجربة أسود من قرن الخروب :(

لو حبيت أجرب فهجرب على android

لأنه على حسب توقعاتي سيسطر في فترة قريبة :)

تحياتي

امممم

ماشى يا عموو علاء

اكيد انت ادرى بهذه التجربه

ولكن من وصفك فهي جميله اوووى ( طبعا بالعكس :P )

ربنا يوفققك ان شاء الله

طيب اتجهه انت بس وربنا يوفققك ان شاء الله

Software Developer
Mahmoudkelany.com


 

#33

لو سمحت عندي استفسار غريب شوية

انا لسه جديد اوي في موضوع الجافا مكملتش ساعات فيه فاستحملني شوية :blush:

دلوقتي بعد لما اعمل البروجكت عاوز ابقا انزلو على الموبايل اعمل اييه ؟

وشكرا

#34

هتعمل clean and build للبرنامج

وبعدين تدخل على مسار المشروع

هتجد مجلد يسمى dist ستجد فيه برنامجك بامتداد .jar

خذه وقم بتنزيله على الموبيل

وقم بالضغط عليه هيطلب منك التسطيب كأى برنامج استخدمته من قبل

Software Developer
Mahmoudkelany.com


 

#35

السلام عليكم ورحمة الله وبركاته

بارك الله فيك أخي على الموضوع القيم

أنا جديدة في الجافا ومشروع تخرجي بتطلب برمجة تطبيق على الهاتف المحمول

المرحلة الأولى من مشروعي بده client- server system بحيث مثلا في قاعة المحاضرات اللي فيها عدد كبير من الطلبة يعرض الدكتور سؤال اختيار من متعدد لمدة 30 ثانية والطلبة خلال تلفوناتهم يجابوا يعني بدي exceclusive choise group يعني مثلا (A, B, C, D) ويرسلوها للخادم اللي هو اللاب توب اللي عند الدكتور عن طريق البلوتوث .

ممكن تكتب شو هي ال software tools and hardware tools اللي بحتاجها وياريت تكتب شو النسخة من ال netbeans اللي بتنصحني أستخدمها

وبعدين كيف بقدر أخلي الخادم يستقبل حوالي 100 رد من الطلبة في نفس الوقت عن طريق البلوتوث

أرجو الرد العاجل للضرورة القصوى

#36

للأسف استنيت الإجابة كتير ولسا ما في رد

المهم بدي أسأل

http://netbeans.org/downloads/6.9.1/

الرابط اللي فوق لتنزيل نتبينز 6.9.1 بس في خيارات كتير أنزل من خيار جافا ولا all

أرجو الرد العاجل؟؟

#37

محدش رد عليك علشان سوالك فى موضوع جانبى

والمفروض يكون فى موضوع مستقل حتى يقوم احد بالرد عليك

بالنسبه للتحميل فقم بالتحميل من اخر عمود "ALL" كى يدعم الـ JavaME

Software Developer
Mahmoudkelany.com


 

#38

بارك الله فيك على الرد

#39
Mahmoud Kelany كتب:

هذا هو الكود كاملا

وسوف نقوم بشرح الكود سطر سطر

لتحميل الكود على الـ netbeans

FirstLessonLearnMobileApplications.zip

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hello;

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

/**
 * @author Mahmoud Mahrous
 */
public class FirstMidlet extends MIDlet implements CommandListener {

    private Form firstForm;
    private Form secondForm;
    private List friendsList;
    // Commands
    Command gotoSecondFormCmd;
    Command gotoFriendsListCmd;
    Command backFromSecondFormCmd;
    Command backFromFriendsListCmd;

    public void startApp() {
        Display.getDisplay(this).setCurrent(getFirstForm());
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    /**
     * @return the firstForm
     */
    public Form getFirstForm() {
        if (firstForm == null) {
            firstForm = new Form("First Form");

            StringItem message = new StringItem("Hello", "Welcome");
            firstForm.append(message);

            Ticker ticker = new Ticker("Welcome to my first test application with my self");
            firstForm.setTicker(ticker);

            // Commands
            gotoFriendsListCmd = new Command("Friends", Command.ITEM, 0);
            gotoSecondFormCmd = new Command("Second", Command.ITEM, 0);

            firstForm.addCommand(gotoSecondFormCmd);
            firstForm.addCommand(gotoFriendsListCmd);
            firstForm.setCommandListener(this);
        }
        return firstForm;
    }

    /**
     * @return the secondForm
     */
    public Form getSecondForm() {
        if (secondForm == null) {
            secondForm = new Form("Second Form");

            StringItem message = new StringItem("Second form", "Welcome to second form");
            secondForm.append(message);

            // Commands
            backFromSecondFormCmd = new Command("Back", Command.BACK, 0);
            secondForm.addCommand(backFromSecondFormCmd);
            secondForm.setCommandListener(this);
        }
        return secondForm;
    }

    /**
     * @return the friendsList
     */
    public List getFriendsList() {
        if (friendsList == null) {
            friendsList = new List("Friends List", List.EXCLUSIVE);
            friendsList.append("Mahmoud", null);
            friendsList.append("Mahrous", null);
            friendsList.append("Waleed", null);

            // Commands
            backFromFriendsListCmd = new Command("Back", Command.BACK, 0);
            friendsList.addCommand(backFromFriendsListCmd);
            friendsList.setCommandListener(this);
        }
        return friendsList;
    }

    public void commandAction(Command cmd, Displayable d) {
        if (cmd == gotoSecondFormCmd) {
            Display.getDisplay(this).setCurrent(getSecondForm());
        } else if (cmd == gotoFriendsListCmd) {
            Display.getDisplay(this).setCurrent(getFriendsList());
        } else if (cmd == backFromFriendsListCmd || cmd == backFromSecondFormCmd) {
            Display.getDisplay(this).setCurrent(getFirstForm());
        }
    }
}

هيا بنا نبدا فالشرح

private Form firstForm;
private Form secondForm;

نقوم بانشاء شاشتين

private List friendsList;

وننشأ ايضا قائمة

ثم بعد ذلك نقوم بتحديد الـ Commands

هذه تمثل الزارير فى ال J2ME

بمعنى اخر الاحداث

فى الشاشه الاولى سوف نجد ان هناك حدثين احداهما يذهب الى الشاشه الثانيه والاخر يذهب الى قائمه الاصدقاء

لذلك قمنا بتعريف

Command gotoSecondFormCmd;
 Command gotoFriendsListCmd;

لكن عندما نكون فى احدى الشاشتين الفرعيتين نريد الرجوع الى الشاشه الاولى

فهناك حدث نقوم باضافته لكلا من الشاشه الثانية و القائمه

فقمنا بتعريف

Command backFromSecondFormCmd;
 Command backFromFriendsListCmd;

وبعد ذلك نقوم بعمل getter الى الشاشتين وقائمه الاصدقاء

نبدا بعمل getFirstForm

فى داخلها نقوم بالاستعلام هل الـ FirstForm = null

اذا كان كذلك يعنى انه لم يتم تعريفه الى الان

نقوم بتعريفه

هكذا

firstForm = new Form("First Form");

وبعد ذلك نقوم باضافه كلام ترحيبى فى الاول

وذلك يكون من نوع StringItem

نقوم بتعريف كائن نقوم باضافته الى الشاشه الاولى

باستخدام الداله append

firstForm.append(message);

وذكرنا من قبل اننا نريد ان نقوم بعمل شريط اخبارى

وهذا الشريط يكون بانشاء كائن من الـ Ticker Class

ونقوم بكتابه الرساله اللتى تقوم بالعرض فى البناء الخاص بهذا الكائن

لكن عندما نريد ان نضيفه الى الشاشه الاولى

لا نستخدم الداله append

لكن هناك داله خاصه بذلك وهى setTicker

firstForm.setTicker(ticker);

بعد ذلك نقوم باضافه الحدثين الخاصيين بالتنقل

من الشاشه الاولى الى الشاشه الثانيه او قائمه الاصدقاء

نقوم الاول بتعريفهم باستخدام new KeyWord

 gotoFriendsListCmd = new Command("Friends", Command.ITEM, 0);

وفى البناء الخاص به

نكتب اسم الكلمة المراد ان تظهر للمستخدم

وبعد ذلك نحدد نوع الحدث

على انه item command

وبعد ذلك تقوم بوضع درجه الأولوية

لكنها نادرا ما تستخدم فدائما نضعها بصفر

كذلك فى الحدث الاخر الخاص بقائمه الاصدقاء

هناك سطر خاص بالاستماع الى الاحداث كما فى ال actionListener

فى الـ J2SE

لكن لكى نتمكن من استخدام هذا الامر

لابد من ان تكون الـ FirstMidlet

تحتوى على الـ interface

CommandListener

فتكون الكلاس بهذا الشكل

public class FirstMidlet extends MIDlet implements CommandListener {
}

وهناك داله عندما نقول ان هذه الكلاس تستخدم CommandListener

فهناك داله abstract

وهى

public void commandAction(Command cmd, Displayable d) {
}

سوف نقوم بكتابه الكود الخاص بها بعد ذلك

فائدتها هى اللتى تستمع الى الاحداث التى يقوم المستخدم بفعلها

وبهذا نكون قد قمنا من الانتهاء من عمل الـ FirstForm

عمل الـ secondForm

مثل الـ firstForm

سوف نقوم بشرح الجديد وهو الـ FriendsList

نقوم ايضا بالسوال هل تم انشاء القائمه من قبل ام لا

ان كان لالا

فنقوم بتعريف القائمه

وفى البناءا لخاص بيها

friendsList = new List("Friends List", List.EXCLUSIVE);

نقوم بكتابه اسم الـقائمة

ونختار نوع القائمه

فهنا نختار EXCLUSIVE

يعنى انه يتم اختيار عنصر واحد فى وقت واحد

نقوم بعد ذلك باضافه عناصر الى القائمه

friendsList.append("Mahmoud", null);

باستخدام append

اللتى تقوم بكتابه اسم العنصر ونقوم بوضع له صوره ان وجد

ان لم يوجد نكتب null

وكما قولنا قبل ذلك ان هذه الشاشه سوف تحتوى على زر رجوع الى الشاشه الاولى

backFromFriendsListCmd = new Command("Back", Command.BACK, 0);

نقوم بتعريف الحدث الخاص بذلك

ونكتب له اسمه الخاص به

وبعد ذلك نحدد نوعه

سوف يكون من النوع BACK

وبعد ذلك نضيف هذا الحدث على القائمه

  friendsList.addCommand(backFromFriendsListCmd);

وبعد ذلك نقوم بعمل مستمع للقائمه

friendsList.setCommandListener(this);

الى هنا

بقى شيئين هما

الـ CommandListener

والبدايه اللتى يبدا من عندها البرنامج

سوف نقوم بشرحهم لاحقا

يتبع ....

السلام عليكم

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

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