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

5 - 1 - التعامل مع صندوق النص TextBox في J2ME

مغلق
بدأه مصعب غيلان في 5 يوليو 2004 · 2 رد · 4,971 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سنتعرف في هذا الجزء على كيفية التعامل مع صندوق النص TextBox

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

المشيد Constructor الخاص بهذا الكائن على الشكل

TextBox(String title, String text, int maxSize, int constraints)

title : عنوان النص وسيظهر في اعلى صندوق النص

ونستطيع تغييره باستخدام الطريقة الموجودة في نفس الصنف setTitle وهذة الطريقة ورثها هذا الصنف TextBox من الصنف Screen

text : وهو النص الذي سيكون موجودا في داخل صندوق النص

ونستطيع التعامل معه من خلال الامرين setString , getString

maxSize : عدد الاحرف التي سيتقبلها صندوق النص بحيث لا يمكن للمستخدم اضافة اكثر من العدد المطلوب

constraints : القيد او الهيئة للنص المدخل وهناك العديد من القيود

هذة القيود موجودة في الصنف TextField على هيئة حقول ساكنه static

ويتم استخدامها على الشكل TextField.Field حيث Field تعبر عن اسم القيد

من هذة القيود :

ANY : ويعبر عن جميع الاحرف او الارقام

NUMERIC : يسمح للمستخدم باستخدام الارقام فقط

PASSWORD : تظهر للمستخدم نجمة عن كل حرف يكتبه

وبعد ان تعرفنا على بنية المشيد سنذكر الان بعض الطرق التابعة للصنف TextBox

public void delete(int offset, int length)

تقوم هذة الدالة بحذف جزء من النص الموجود في صندوق النص

offset : بداية النص المراد حذفه

length : طول النص

public int getConstraints()

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

public void setConstraints(int constraints)

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

public int getMaxSize()

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

public int setMaxSize(int maxSize)

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

public String getString()

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

public void setString(String text)

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

public int size()

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

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

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;


public class HelloMidlet extends MIDlet implements CommandListener 
{

private Display display;
Command cmdExit = new Command("Exit", Command.EXIT, 0);
Command cmdClear = new Command("Clear", Command.SCREEN, 0);
Command cmdUndo = new Command("Undo", Command.SCREEN, 0);
Command cmdConstraint = new Command("Constraint", Command.SCREEN, 0);

TextBox box = null;
String undoString;

public void HelloMidlet(){}

public void startApp(){


display =Display.getDisplay(this);

undoString = "Hello";
box =new TextBox("ANY ",undoString,20,TextField.ANY);
box.addCommand(cmdExit);
box.addCommand(cmdClear);
box.addCommand(cmdUndo);
box.addCommand(cmdConstraint);
box.setCommandListener(this);
display.setCurrent(box);
}

public void pauseApp(){ }

public void destroyApp(boolean unconditional){}

/************* implements CommandListener ****************/

public void commandAction(Command c, Displayable s)
  {
    if (s == box)
     {
      if ( c == cmdExit )
        {
         destroyApp(false);
         notifyDestroyed();
        }
      else if ( c == cmdClear ) 
       {
         undoString = box.getString();
         box.setString("");
       }
      else if ( c == cmdConstraint ) 
         if ( box.getConstraints() == TextField.ANY)
           {
             box.setConstraints(TextField.NUMERIC);
             box.setTitle("NUMERIC");
           }
         else
           {
             box.setConstraints(TextField.ANY);
             box.setTitle("ANY");
           }
      else if ( c == cmdUndo ) 
         box.setString(undoString);
       }

  }  //  end commandAction

}  // end Class
#2
Command cmdExit = new Command("Exit", Command.EXIT, 0);

سنستخدمه من اجل الخروج من البرنامج

Command cmdClear = new Command("Clear", Command.SCREEN, 0);

سنستخدمه من اجل مسح محتويات صندوق النص

Command cmdUndo = new Command("Undo", Command.SCREEN, 0);

سنستخدمه من اجل عرض النص السابق قبل عملية المسح الاخيرة

Command cmdConstraint = new Command("Constraint", Command.SCREEN, 0);

سنستخدمه من اجل تغيير القيد في صندوق النص

عرفنا ثلاثة ازرار من النوع SCREEN و زر واحد من النوع EXIT

طبعا هذة الانواع EXIT , SCREEN ليست مهمة جدا

ولكن لترتيب عملية الظهور على الشاشة مثلا اذا قمنا بتعريف زر معين من نوع BACK فان هذا الزر سيظهر في يمين الشاشة على العكس من النوع SCREEN الذي سيظهر في اليمين

طبعا تختلف طريقة الظهور من جهاز لاخر .

String undoString;

هنا عرفنا متغير من نوع نصي لنقوم بخزن النص الموجود في صندوق النص قبل حذفه في هذا المثال

وذلك حتى يستطيع المستخدم العودة للنص السابق

undoString = "Hello";

اسندنا القيمة النصية Hello الى المتغير undoString

وذلك حتى نقوم بعرض هذة القيمة النصية وفي نفس الوقت نحتفظ بالنص السابق

box =new TextBox("ANY ",undoString,20,TextField.ANY);

عنوان صندوق النص هذا سيحمل اسم القيد Constraint وفي البداية سيكون القيد من النوع ANY

box.addCommand(cmdExit);
box.addCommand(cmdClear);
box.addCommand(cmdUndo);
box.addCommand(cmdConstraint);
box.setCommandListener(this);

قمنا باضافة جميع الازرار المعرفة الى صندوق النص

    if (s == box)

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

طبعا في مثالنا هذا يمكن الاستغناء عن هذا الشرط لانه لا يوجد لدينا سوى واجهة عرض UI واحدة وهي box

      if ( c == cmdExit )

سيدخل التنفيذ هنا اذا تم ضغط زر الخروج Exit

      else if ( c == cmdClear )

سيدخل التنفيذ هنا اذا تم ضغط زر مسح صندوق النص Clear

         undoString = box.getString();

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

         box.setString("");

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

      else if ( c == cmdConstraint )

سيدخل التنفيذ هنا اذا تم ضغط زر تغيير القيد Constraint

         if ( box.getConstraints() == TextField.ANY)

اذا كان القيد السابق من النوع ANY سنقوم بتغييره الى النوع NUMERIC والعكس كذلك

اذا كان من النوع NUMERIC سنحوله الى ANY

            box.setConstraints(TextField.NUMERIC);

قمنا بتغيير القيد الى NUMERIC

             box.setTitle("NUMERIC");

غيرنا عنوان صندوق النص الى اسم القيد الجديد NUMERIC

             box.setConstraints(TextField.ANY);

قمنا بتغيير القيد الى ANY

             box.setTitle("ANY");

غيرنا عنوان صندوق النص الى اسم القيد الجديد ANY

      else if ( c == cmdUndo )

سيدخل التنفيذ هنا اذا تم ضغط زر تراجع Undo

         box.setString(undoString);

فقط سوف نقوم بعرض النص الذي قمنا بحفظه في خطوة سابقة

تم تعديل هذه المشاركة بواسطة مصعب غيلان في 5 يوليو 2004 في 16:05

#3

هذا هو شرح الكود والدرس التالي سيكون بإذن الله

التعامل مع الفورم Form

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

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