• 0
com.jkelany

الدرس الثانى - نبذة سريعة عن ال Java ME

سؤال

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

ازيكم عاملين ايه ؟

كل عام وانتم بخير

لنا عودة مره اخرى مع الـ J2ME

رابط الدرس السابق

بسم الله الرحمن الرحيم

النهارده هنعمل برنامج صغير خالص جمع وضرب رقمين

مكون من البرنامج عندى

3 textField

اثنان منهم لادخال الرقمين المراد جمعهم او ضربهم والثالث لعرض النتيجة

طبعا حقول الادخال هذه لابد وان تكون داخل شاشه

يقبى هنعرف From

وطبعا احنا قولنا هيجمع ويضرب رقمين

يقبى اكيد عندى حدث للجمع وحدث اخر للضرب

وطبعا اكيد يعنى هيكون فيه حدث للخروج

//Forms
private Form mainForm;
//TextFields
TextField firstNumberTextField;
TextField secondNumberTextField;
TextField resultTextField;
//Commands
Command exitCmd;
Command addCmd;
Command mulCmd;

بعد ما شوفت الاشياء الذى سوف احتاجها فى هذا البرنامج الصغير

المراد تعلم منه ما هو الـ textField

ومراجعه على الـ Commands , Forms

طبعا عندى شاشه اسمها mainForm

هاعمل ليها getMainForm

بقوله داخل الداله لو الـ

mainForm == null 

يعنى غير معرفه

عرفها وعرف الحاجات دى بداخلها


public Form getMainForm() {
if (mainForm == null) {
//Forms
mainForm = new Form("Calc");
//TextFields
firstNumberTextField = new TextField("First Number", "0", 32, TextField.NUMERIC);
secondNumberTextField = new TextField("Second Number", "0", 32, TextField.NUMERIC);
resultTextField = new TextField("Result", "", 32, TextField.ANY);
mainForm.append(firstNumberTextField);
mainForm.append(secondNumberTextField);
mainForm.append(resultTextField);
//Commands
addCmd = new Command("Add", Command.ITEM, 0);
mulCmd = new Command("MUL", Command.ITEM, 0);
exitCmd = new Command("Exit", Command.EXIT, 0);
mainForm.addCommand(addCmd);
mainForm.addCommand(mulCmd);
mainForm.addCommand(exitCmd);
mainForm.setCommandListener(this);
}
return mainForm;
}

تعالوا نمسك الكود الغريب عننا ونفهمه ونعرف ايه هو وبيتعمل ازاى

اللى انا شايفه هنا فى الكود انه مش جديد علينا غير TextField

            firstNumberTextField = new TextField("First Number", "0", 32, TextField.NUMERIC);

يعنى مثلا دا

بعرف كائن من الـ textField Class

والبناء بتاعها بياخد القيم التاليه على الترتيب

1- الاسم الذى سوف يظهر بجانبه

2- القيمة الافتراضيه اللتى تكون بداخله

3- حجمه فى التمثيل داخل الشاشه

4- تحديد نوعه يعنى عاوز ادخل ارقام بس ولا ارقام وحروف ولا كلمه مرور ولا خليط من الاتنين

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

يعنى مثلا

TextField txt = new TextField("Text", "", 32, TextField.NUMERIC | TextField.PASSWORD);

هنا حددت النوع على انه يكون ارقام وايضا تكون كلمه مرور يعنى غير مرئيه

وذلك باستخدام الـ OR operator

resultTextField = new TextField("Result", "", 32, TextField.ANY);

الـ resultTextField

بها نوع جديد اللى هو , TextField.ANY

يعنى بقوله هادخل اى حاجه من ارقام وحروف ورموز

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

وايضا نقوم بعمل الاحداث كما تعلمنا من قبل

واضافتها الى الشاشه

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

CommandListener interface

وبكدا تم ان شاء الشكل للبرنامج

لكنه لا يعمل لانه لم يتعمل عمل الـكود الذى يجمع او يضرب

حسب ما يحدده المستمع

لكى يكون الكود اكثر تنظيما

ننشاء داله تسمى addition

خاصه بعمليه الجمع


public void addition() {
try {
double numberOne = Double.parseDouble(firstNumberTextField.getString().trim());
double numberTwo = Double.parseDouble(secondNumberTextField.getString().trim());
resultTextField.setString((numberOne + numberTwo) + "");
} catch (Exception e) {
}
}

ناتى الى داخل الكود

البرنامج يتعمل مع الارقام العشريه

فالان نريد ان نجلب الرقم الموجود داخل الـ TextField

يكون ذلك بالتالى

firstNumberTextField.getString().trim()

ولكن هذا يقوم بارجاع String

ولكنى اريد رقم

فاقوم بعمل تحويل له من String الى Double

هكذا فى خطوه واحده

double numberOne = Double.parseDouble(firstNumberTextField.getString().trim());

ممكن تقسيم الخطوه السابقة الى خطوتين

String numOneStr = firstNumberTextField.getString().trim();
double numberOne = Double.parseDouble(numOneStr);

لكنى لا افضل ذلك

فانا لست بحاجه الى تخزينه فاقوم بتحويله مباشره دون تخزين

وبعد ذلك اقوم بجعل قيمه الجمع بينها تعرض داخل الـ

resultTextField

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

 setString("  ");

لعلكم لاحظتم وجود try , catch

هذا من باب الحذر فقط

اذا وجد خطا يتم التعامل معه

ولكن ما الذى يجعلك واثق انه من باب الحذر فقط

لعلك نسيت ما جعلناه فى ان يكون الـTextField. NUMERIC

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

يتم عمل نفس الطريقه مع الداله الخاصه بالضرب


public void multiplication() {
try {
double numberOne = Double.parseDouble(firstNumberTextField.getString().trim());
double numberTwo = Double.parseDouble(secondNumberTextField.getString().trim());
resultTextField.setString((numberOne * numberTwo) + "");
} catch (Exception e) {
}
}

بعد ذلك بقى خطوه واحده

وهى ان نقوم بعمل الـ commandAction

public void commandAction(Command cmd, Displayable d) {
if (cmd == addCmd) {
addition();
} else if (cmd == mulCmd) {
multiplication();
} else if (cmd == exitCmd) {
notifyDestroyed();
}
}

نقوم بمنادة الداله

            addition();

اذا كان الحدث المسموع ياتى من الامر

addCmd

وايضا مع الـ

multiplication();

وبقى جزء صغير خالص هو انى اعرض وتم شرحها من قبل فى الدرس السابق

لتحميل الكود

CalcMobile.zip


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

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

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

//Forms
private Form mainForm;
//TextFields
TextField firstNumberTextField;
TextField secondNumberTextField;
TextField resultTextField;
//Commands
Command exitCmd;
Command addCmd;
Command mulCmd;

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

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command cmd, Displayable d) {
if (cmd == addCmd) {
addition();
} else if (cmd == mulCmd) {
multiplication();
} else if (cmd == exitCmd) {
notifyDestroyed();
}
}

/**
* @return the mainForm
*/
public Form getMainForm() {
if (mainForm == null) {
//Forms
mainForm = new Form("Calc");
//TextFields
firstNumberTextField = new TextField("First Number", "0", 32, TextField.NUMERIC);
secondNumberTextField = new TextField("Second Number", "0", 32, TextField.NUMERIC);
resultTextField = new TextField("Result", "", 32, TextField.ANY);
mainForm.append(firstNumberTextField);
mainForm.append(secondNumberTextField);
mainForm.append(resultTextField);
//Commands
addCmd = new Command("Add", Command.ITEM, 0);
mulCmd = new Command("MUL", Command.ITEM, 0);
exitCmd = new Command("Exit", Command.EXIT, 0);
mainForm.addCommand(addCmd);
mainForm.addCommand(mulCmd);
mainForm.addCommand(exitCmd);
mainForm.setCommandListener(this);
}
return mainForm;
}

/**
* Addition
*/
public void addition() {
try {
String numOneStr = firstNumberTextField.getString().trim();
double numberOne = Double.parseDouble(numOneStr);
double numberTwo = Double.parseDouble(secondNumberTextField.getString().trim());
resultTextField.setString((numberOne + numberTwo) + "");
} catch (Exception e) {
}
}

/**
* multiplication
*/
public void multiplication() {
try {
double numberOne = Double.parseDouble(firstNumberTextField.getString().trim());
double numberTwo = Double.parseDouble(secondNumberTextField.getString().trim());
resultTextField.setString((numberOne * numberTwo) + "");
} catch (Exception e) {
}
}
}

تم تعديل بواسطه Mahmoud Kelany
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

16 إجابة على هذا السؤال .

  • 0

ما شاء الله

يعني عن قريب يا محمود نقدر نعتبرك خبير

بالتوفيق و للامام

شرح بسيط و جميل

لكن لي تعليق

انا افضل لكي لا اتعب مخي و انا اتذكر اسم الكائن الذي عملته

ابدأ بتسميته بصفته

مثلا

Command cmd_add;

بدلا

Command addCmd;

(هذا رأيي)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما شاء الله

يعني عن قريب يا محمود نقدر نعتبرك خبير

بالتوفيق و للامام

شرح بسيط و جميل

لكن لي تعليق

انا افضل لكي لا اتعب مخي و انا اتذكر اسم الكائن الذي عملته

ابدأ بتسميته بصفته

مثلا

Command cmd_add;

بدلا

Command addCmd;

(هذا رأيي)

الله يخليك اخى محمد مش للدرجه هذه

يارب ان شاء الله ربنا يوفقنا جميعا

اشكرك

اممم

فعلا هو كويس وليس فى الموبيل فقط

لكن فى باقى اللغه

لكن انا سمعت اللى انا ماشى عليه هو الـ java convention

يعنى ان انا انهى الكائن بنوعه

يعنى

secondNumberTextField

ان انا انهيته بـ TextField لذلك فهو من هذا النوع ووهكذا

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

صعب شويه اتعود على مبدا تانى

لكن لدى رأى على رأيك

لماذا تستخدم الـ ( _ )

هذا هو Microsoft convention

ممكن تستخدمها وتكون هكذا افضل طالما انك تفضل كتابه cmd فى الاول

تكون هكذا

Command cmdAdd;

:)

سلام عليكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ال java convention ليست اجبارية في الكتابة

لكن هي شيء معتمد لكي يكون التفاهم ما بين المبرمجين اسهل

و لكل شخص حرية الاختيار بما يناسبه

اما بالنسبة لاستخدامي ل " _ " في الاسماء

ذلك لكي اريح عيني عند قرأة الكود عند انسدال الخيرات بين الاسماء المتوفرة لديك

بصراحة في الشغل لا استخدمها انما استخدم ال camelCase هي البدء بصغير و الفصل بين الكلمات بحرف كبير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ال java convention ليست اجبارية في الكتابة

لكن هي شيء معتمد لكي يكون التفاهم ما بين المبرمجين اسهل

و لكل شخص حرية الاختيار بما يناسبه

اما بالنسبة لاستخدامي ل " _ " في الاسماء

ذلك لكي اريح عيني عند قرأة الكود عند انسدال الخيرات بين الاسماء المتوفرة لديك

هدي أعصابك ياعم..

طبعا ليست إجباريه... أنا عن نفسي أفضل C convention :P

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هدي أعصابك ياعم..

طبعا ليست إجباريه... أنا عن نفسي أفضل C convention :P

يا عم انا هادي الاعصاب :cool:

تم تعديل بواسطه محمد عرسان
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هدي أعصابك ياعم..

طبعا ليست إجباريه... أنا عن نفسي أفضل C convention :P

ما انا مهدى اعصابى اهووو

ماشى ما انا عارف انها ليست اجباريه بس انا بحب المنتدى المصنع محليا

مش التقليد :P :P :P :P

قال C convention قال :lol: :lol: :lol:

يا عم

يا عم انا هادي الاعصاب :cool:

ايوه خليك انت هادى

بس ازاى محمد و هادى مش عارف بصراحه :lol:

سيبك من بتاع الـ C convention دا

قال C convention قال :P :wub:

تم تعديل بواسطه Mahmoud Kelany
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
سيبك من بتاع الـ C convention دا

قال C convention قال

mad.gif ماشي يامحمود, بتتريق على عمك :P
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

mad.gif ماشي يامحمود, بتتريق على عمك :P

معلش يا عمووو

ان شاء الله انزل درس تانى نتعلم منه حاجه تانيه

وهى الـThread, TimerTask فى تطبيقات الموبيل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تسلم يا محمود في انتظار جديدك..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تسلم يا محمود في انتظار جديدك..

ان شاء الله قريبا احتمال اكيد باذن الله اليوم

احتفالا بمشرفنا الجديد محمد عرسان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

برضو غاوي تخرب مواضيع خلق الله يا هويدي tongue.giftongue.gif

بفكر آخذ لفة سريعة على المواضيع الي بتخشها علشان أخفي ردودك tongue.giftongue.giftongue.gif

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

برضو غاوي تخرب مواضيع خلق الله يا هويدي tongue.giftongue.gif

بفكر آخذ لفة سريعة على المواضيع الي بتخشها علشان أخفي ردودك tongue.giftongue.giftongue.gif

تحياتي

معلش بقا يا عموو علاء

سماح المره دى

علشان خاطرى :P :P :P

دا هويدى حبيبى :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا كثير الك اخي

عندي استفسار بسيط ، و هو اني عملت ويب سيرفس تقوم بجمع عددين يدخلهما المستخدم

يعني عندما يدخل المستخدم هذين الرقمين من خلال برنامج على الجوال ، سيتصل هذا البرنامج بالويب سيرفيس حتى يقوم باظهار نتيجة جمع هذين العددين

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

و بكون شاكره كتير الك و ممنونه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اعتقد انك تريدين هذا

http://www.arabteam2000-forum.com/index.php?showtopic=183742

ممكن تستغنى عن طريقه قاعده البيانات

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

معذره على التأخر لدخولى المتقطع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تكرم وفي إنتظار المزيد :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .