جلسه چهارم برنامه نویسی موبایل

در J2ME

جلسه چهارم :

بریم ادامه کار.....

منتهی قبلش من یه نکته ای رو بگم ، من ویندوزم ترکیده ،فعلا حسش هم نیست برم درستش کنم

اینه که از این به بعد دارم از تو لینوکس بهتون آموزش می دم و تفاوت اینجاست که قبلا با J2ME SDK 3 شبیه سازی می کردیم ولی الآن با Sun Java(TM) Wireless Toolkit 2.5.2 شبیه سازی می کنیم :) ، چی گفتم؟؟؟ هیچی خیلی مهم نیست جلوتر عکس ها رو می بینید متوجه میشید :)) ، در کل اتفاق خاصی نیفتاده خودتونو نگران نکنید:)

TextBox :

وسیله ایه برای گرفتن متن از کاربر.زیر کلاسه Screen هست و تمام صفحه (یعنی کله صفحه رو می گیره).

برای ایجاد TextBox فقط یه سازنده وجود داره ، اونم به صورت زیره:

TextBox (String  title , String text,int maxSize ,int constraint)d

پارامتر اول عنوانشه ، پارامتر دوم متنه پیش فرضشه ، پارامتر سوم حداکثر تعداد کاراکتر هایی که کاربر می تونه تایپ کنه رو نشون می ده و پارامتر آخر محدودیته!!!

اون پارامتر آخریه می تونه موارد زیر باشه:

0

وقتی محدودیت صفر باشه هر چرتی می شه توی TextBox تایپ کرد.

1

وقتی محدودیت یک باشه تو TextBox  میشه هر چیزی که مثله آدرس ایمیل باشه تایپ کرد.

2

وقتی محدودیت ۲ باشه فقط عدد میشه تایپ کرد.

3

وقتی محدودیت رو رو ۳ تنظیم کنیم تو TextBox فقط شماره تلفن میشه وارد کرد.

4

۴ باشه یعنی URL

5

۵ باشه میشه عدد رو به صورت Decimal وارد کرد مثل 2.4- و ...

ولی خب این عدد ها رو که نمیشه حفظ کرد :)) ، در عوض میشه از مقادیر زیر استفاده کرد:

TextField.ANY

همون هرچیه

TextField.EMAILADDR

همون ای میل آدرسه که گفتم

TextField.NUMERIC

اینم که معلومه یعنی چی:)

TextField.PHONENUMBER

اینم بگم؟؟معلومه دیگه :)

TextField.URL

اینم توضیح نمی دم ، بالا اشاره شد بهش دیگه :)

TextField.DECIMAL

توضیحات این رو هم می پیچونم :)

ولی واقعاً خنده است ، حساب کنید یکی که تازه داره شروع می کنه به کار کردن از کجا باید بدونه که چیزی مثل TextBox.NUMERIC وجود نداره و برای محدودیت ها باید از محدودیت های TextField استفاده کنه؟؟؟

 

آها یکی دیگه هم هست که با حاله و میشه به عنوان محدودیت ازش استفاده کرد

TextField.PASSWORD

محدودیت رو اگه رو این تنظیم کنید متنی که دارید وارد می کنید نشون داده نمیشه

يه کد می زنیم بقیه مقادیر رو ولی خودتون آزمایش کنید که خوب دستتون بیاد

setCurrent رو که قبلاً نوشته بودیم همونه :)

یه TextBox ایجاد کردیم و به صورت Password محدودیتش رو تعیین کردیم.

اینم خروجیش :

دیگه یه ساعت چی رو نگاه می کنید؟؟؟ :)) پسورد ایه دیگه :))

 

خب یه چند تا از متد های TextBox رو هم اسم ببرم و سریع پرونده اش رو ببنیدم !

public void  delete (int  offset , int length)d

برای حذف قسمتی از متن موجود در TextBox  به کار میره به این صورت که از اندیسه offset به بعد به اندازه length یه متن از متن اصلی حذف میشه .(حالا جلوتر مثال می زنم بهتر جا می افته)

public  int getChars(char[] data)d

متن داخل TextBox رو به صورت آرایه ای از کاراکتر ها در آرایه data ذخیره می کنه. (نه که الزاماً اسمش data باشه ها :دی ، منظور همون پارامتر ورودی تابع است :دی ، دیگه همتون جاوا کارید می دونید چی می گم :دی :دی ) و طول متن رو بر می گردونه

public   int   getMaxSize()d

حد اکثر اندازه متن مجازی که برای TextBox  مشخص کرده بودیم رو بر می گردونه ، توجه کنید این با طول متنی که کاربر وارد می کنه فرق داره ، کاربر می تونه یه متن با اندازه کمتر از این وارد کنه.

public  String  getString()d

متن داخل TextBox  رو به صورت یه String بر می گردونه، کاربردش مثله getChars هست دیگه منتهی هر موقع از هر کدوم که راحت تر بودید می تونید استفاده کنید.

 

public  void  insert(String   src,int  position)d

متن src رو بعد از موقعیت position تو متن اصلی درج می کنه.

public  void  insert(char[]  data,int  offset,int  length , int  position)d

این متد هم مثله قبلیه است منتهی انعطاف پذیریش بیشتره ، به این صورت که به جای اینکه کل متن موجود در data  بعد از موقعیت position درج شه می تونیم کاری کنیم که فقط یه زیر آرایه از data کپی شه ، یعنی فقط یه قسمت خاصی از data که این قسمت خاص از اندیس offset شروع میشه به طول length  .

public  void  setString(String txt)d

متن TextBox رو تغییر میده.

public  int  size()d

طول متن TextBox  رو بر می گردونه.

متد پتد باز هم هست و من همشونو اسم نبردم ، فعلاً همینا بسه دیگه :)

بهتر اینه که با اینا کد بزنیم که بیاد دستمون.

مثال :

تو این مثال یه TextBox ایجاد می کنم. یه متن پیش فرض هم براش می زارم. یه Commnad هم بهش اضافه می کنم که از یه اندیس خاص با یه طوله خاص متن رو حذف کنه.(اوکی؟)

به کد خوب توجه کنید.

اول یه متن ایجاد کردم تو متغیر text ذخیره اش کردم.

بعد یه TextBox  ایجاد کردم ، سازنده اش رو قبلاً توضیح دادم پس مشکل خاصی نیست تا اینجا.

یه Command ایجاد کردم با عنوان DO که این کار رو هم خیلی وقته یاد گرفتیم :دی

Command رو به TextBox  امون که همون tb  هست اضافه کردم و بعد هم به tb یه CommandListener اضافه کردم.

حالا داخل commandAction یه کم مهمه.اول یه اشاره گر به TextBox به دست میاریم (این کار رو هم جلسه های قبل یاد گرفتیم ، یعنی قبلاْ یاید گرفته بودیم که چی جوری با پارامتر d کار کنیم، یادتونه که؟ )

و delete رو فراخوانی کردم باید متنمون از اندیس ۳ به بعد به طول ۵ حذف بشه. توجه کنید که اندیس از صفر شروع میشه پس به خروجی حتماً توجه کنید.

setCurrnet هم که توضیح نمی خواد.

این خروجی قبل از فشار دادن DO:

 

و این هم خروجی بعد از فشار دادن DO برای دفعه اول (خوب توجه کنید متن از کجا تا کجا حذف شده)

 

مثال :

این مثال رو هیچ توضیحی نمی دم خودتون فقط نگاه کنید !

مثال :

اول کد رو ببینیم بعد توضیح بدم :)

خب ببینید که اول یه TextBox ایجاد کردم با همون متن قبلیه ولی این بار حد اکثر طول رو به ۴۰ افزایش دادم

یه Command  اضافه کردم که اصلاً چیزه مهمی نیست.

تو commandAction خیلی مهمه.

اول یه آرایه ایجاد کردم که متنش ABCDEFGHIJKLM‌ هست.

زیر آرایه ای از این آرایه که از اندیس ۳ شروع می شه و به طول ۵ هست میشه چی؟ بله میشه DEFGH (توجه کنید اندیس از صفر شروع میشه ها) .حالا این زیر آرایه رو تو موقعیت ۷ از متن اصلی درج می کنیم. میشه کجا؟ خودتون ببینید (باز هم دقت کنید اندیس از صفره ها!)

این خروجی قبل از فشار دادن insert   :

 

و این هم خروجی بعد از فشار دادن insert : (البته بعد از اولین بار)

 

بقیه متد ها رو هم خودتون سر و کله بزنید، چیزی نداره که! :) راست می گم!

خب فعلاً بسه دیگه :)) روزه اول عیده بیشتر از این حسش نیست چیزی بنویسم :)

سال نوتون هم مبارک :دی