Lesson 3 J2ME
بسم الله الرحمن الرحيم
قسم الموبايل
الدرس الثالث1).
افتح
ktoolbar
وذلك من
c: wtk21 bin ktoolbar
من شريط الازرار اضغط
new project
لفتح مشروع جديد... سيطلب منك
ktoolbar
ان تكتب اسما للمشروع واسما للصف ... وذلك في نافذة صغيرة يفتحها الزر
new project
...
-- سنسمي مشروعنا الاول
Cisema
على اسم موقع طلاب الحاسوب ونظم المعلومات ... اذا نكتب اسم المشروع واسم الصف كلاهما
Cisema
مع مراعاة ان نبدأ بحرف كبير ثم نضغط زر
Create project
الموجود على النافذة الصغيرة... عندها ستظهر نافذة خاصة باعدادات المشروع
Cisema
من القائمة
Target Platform
اختر
MIDP 1.0
ثم اضغط
ok
اسفل نافذة الاعدادات
2).
الان سنترك
ktoolbar
لفترة ... نقوم بفتح محرر النصوص الذي اخترناه ... انا اخترت المفكرة مع ملاحظة ان يكون ترتيب القراءة من اليسار لليمين ... والاهم ان نراعي حالة الاحرف صغيرة ام كبيرة وكذللك المسافات الابتدائية والحاصرات { } ... -ان ما سنكتبه الان هو الملف المصدري ..حيث تكتب فيه الاكواد التي يفهمها الحاسب من خلال الصفوف والفرضيات والانشائات والتوابع والاوامر ..... - هذا الملف المصدري يجب ان يحفظ بأمتداد جافا اي
.java
وان يوضع في المجلد
src
الموجود في
wtk
- اعمل نسخ ولصق للكود التالي ليظهر عندك بالشكل الصحيح ....
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Cisema
extends MIDlet
implements CommandListener {
private Display mDisplay;
private TextBox mTextBox;
private Command mExitCommand;
public Cisema() {
mExitCommand = new Command("Exit", Command.EXIT, 2);
mTextBox = new TextBox("CISEMA", "mahdi", 200, TextField.ANY);
mTextBox.addCommand(mExitCommand);
mTextBox.setCommandListener(this);
}
public void startApp() {
mDisplay = Display.getDisplay(this);
mDisplay.setCurrent(mTextBox);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
if (c == mExitCommand)
notifyDestroyed();
}
}
لنقم الان بشرح الكود السابق : import javax.microedition.midlet.*; import javax.microedition.lcdui.*; السطران السابقان هما أول خطوة لبناء التطبيق ... نعد المكتبات التي ستستخدمها في البرنامج. و ذلك باستخدام import public class Cisema extends MIDlet implements CommandListener { public class : اول ما يبدأ به البرنامج وهو اسم البرنامج ويجب ان يكون حرفيا مماثل للملف المصدري Cisema Cisema.java تعود هذه التسمية الى موقع الحاسوب ونظم المعلومات حيث اني كتبت اول برنامج لي بهذا الاسم MIDlet تمكننا من استخدام طرق extends MIDlet اذا لنلخص ما جرى في السطور الثلاث السابقة من الكود تم استيراد الرزمة javax.microedition.midlet وذلك للحصول على امكانية الوصول للصنف MIDlet والذي هو الصنف الرئيسي للتطبيق وكذلك استيراد الرزمة javax.microedition.lcdui للحصول على الاصناف Display - command والواجهة CommandListener private Display mDisplay; private TextBox mTextBox; private Command mExitCommand; قمنا بتعريف كائن ليتم عبره التحكم بجهاز العرض وهو mDisplay ثم قمنا بتعريف واجهات المستخدم عن طريق تعريف الواجهة الاساسية من نوع TextBox ثم قمنا بتعريف امر الخروج public Cisema() { mExitCommand = new Command("Exit", Command.EXIT, 2); mTextBox = new TextBox("CISEMA", "mahdi", 200, TextField.ANY); mTextBox.addCommand(mExitCommand); mTextBox.setCommandListener(this); } قمنا بانشاء الصف الخاص بنا Cisema ثم انشاء الامر Exit ذي اللافتة "Exit" والنوع Command.EXIT والاولوية درجة ثانية 2 ثم انشأنا الواجهة mTextBox وعنوانها CISEMA وقيمتها الابتدائية هي الكلمة mahdi وطولها الاعظمي 200 محرف ونوع النص المدخل هو TextField.ANY اي قيمة عددية او حرفية ثم قمنا بأضافة الامر للواجهة من خلال addCommand اخيرا سجلنا الواجهة في قائمة ارسال الاوامر setCommandListener وذلك عبر المرجع (this) ليتم الارسال الحصري الى Listener public void startApp() { mDisplay = Display.getDisplay(this); mDisplay.setCurrent(mTextBox); } هنا نفذنا الطريقة startApp() بالحصول على كائن يعبر عن جهاز الاظهار وهو mDisplay عبر التابع الذي صنعناه getDisplay() ذي البارامتر this ليدل على الحصول الحصري للكائن Display الخاص ليعرض هذا التطبيق ثم جعلنا واجهة المستخدم هي mTextBox فور انطلاق التطبيق عبر setCurrent() public void pauseApp() {} public void destroyApp(boolean unconditional) {} هنا لا يوجد اي تنفيذ للطريقتين pauseApp - destroyApp ان العلامة unconditional لتحديد فيما اذا يتم الاطفاء عن طريق المستخدم او النظام public void commandAction(Command c, Displayable s) { if (c == mExitCommand) notifyDestroyed(); } } اخيرا ... وهو الجزء الاهم وهو تنفيذ الطريقة commandAction ولديها بارامترين هما الامر c والواجهة s التي صدر منها الامر حيث ستنفذ الواجهة على الموبايل بعنوان CISEMA قيمة ابتدائية mahdi حيث يمكنك ان تحذفها وتكتب ما يحلو لك في 200 محرف ثم يتابع الكود بالجملة الشرطيية if اي في حال كون الامر Exit (اي ضغطه المستخدم) عندها يتم طلب الانهاء من مدير التطبيقات عبر notifyDestroyed() تم شرح الكود بعونه تعالى |