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

5 - 3 - التعامل مع صناديق الحوار Alert في J2ME

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

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

يرث هذا الصنف عدد من الاعضاء Members من الصنف Screen ومن هذة الطرق

setTicker, setTitle

Alert : عبارة عن شاشة شبيهة الى حد ما ب Message Box تظهر للمستخدم كتنبيه على عملية معينه

عمل هذة الكائنات بسيط جدا ما عليك الا اعطاء هذة الكائنات بعض الخصائص ومن ثم استدعائها لعرضها على الشاشة

هذا الكائن يحتوي على مشيدين Constructor تستطيع اختيار احدهما

public Alert(String title)
Alert(String title, String alertText, Image alertImage, AlertType alertType)

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

alertText : النص الذي سيظهر داخل التنبيه ويقرأه المستخدم

alertImage : الايقونه او الصورة الصغيرة التي ستظهر في اعلى التنبيه

ويمكن كتابة null لعدم عرض اي صورة

alertType : نوع هذا التنبيه هل هو

ALARM او CONFIRMATION او ERROR او INFO او WARNING

وكل نوع من هذة الانواع تعطي التنبية شكل معين ليظهر به.

ويتم كتابة النوع على الشكل AlertType.TYPE

حيث نقوم باستبدال الكلمة TYPE باحد الانواع السابقة

*******************************************************************

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

public void addCommand(Command cmd)

اضافة زر الى التنبيه وهذه الطريقة غير مستخدمة عادة لكن قد نضطر لاستخدامها احيانا

والسبب انك عادة لا ترغب باضافة اي زر عدا زر موافق

طبعا الزر موافق سيضاف تلقائيا الى التنبيه عند استخدام Timeout من النوع FOREVER وسنرى في الفقرات اللاحقة كيفية التعامل مع Timeout باستخدام الدالة setTimeout

public void setString(String str)

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

public void setTimeout(int time)

Timeout : هو الوقت الذي سيبقى فيه التنبيه معروضا على الشاشة ويقاس بالمللي ثانية

مثلا لو قمنا بانشاء كائن alert من نوع الصنف تنبيه ثم اردنا عرض هذا التنبيه على الشاشة لمدة 5 ثواني فانا سنقوم بالكتابة كالتالي

alert.setTimeout(5000);

لكن ماذا واذا اردنا ان يستمر العرض الى ان يقوم المستخدم بضغط زر موافق مثلا

هل سنزيد قيمة Timeout بالطبع لا

ولكن لعمل ذلك سنقوم بوضع القيمة الثابته FOREVER والتابعة للصنف Alert

اي سنقوم بكتابة الكود على الشكل

alert.setTimeout(Alert.FOREVER);

كما سنرى ذلك في المثال التالي

public AlertType setType()

يقوم بتغيير الشكل الذي سيظهر به التنبيه هل هو

ALARM او CONFIRMATION او ERROR او INFO او WARNING

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

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

public class MyAlert extends MIDlet implements CommandListener
{
  private Display display;

 Command cmdExit = new Command("Exit", Command.EXIT, 0);
 Command cmdAlert = new Command("Alert", Command.SCREEN, 0);
 Command cmdAlertError = new Command("Error", Command.SCREEN, 0);
 Command cmdAlertSave = new Command("Save", Command.SCREEN, 0);

   Form form;

   Alert alert;

  public MyAlert  ()
   {
    display =Display.getDisplay(this);
    form = new Form("Form Title");
    alert = new Alert (" Alert Title "); 
   }

  public void startApp()
   {
    form.append("This is My Form");
    form.addCommand(cmdExit);
    form.addCommand(cmdAlert);
    form.addCommand(cmdAlertError);
    form.addCommand(cmdAlertSave);
    form.setCommandListener(this);
    display.setCurrent(form);
  }

  public void pauseApp(){ }
  public void destroyApp(boolean unconditional){}

/************* implements CommandListener ****************/
public void commandAction(Command c, Displayable s)
 {
    if (  s == form )
      {
        if (c == cmdExit)
          {
            destroyApp(false);
            notifyDestroyed();
          }
        else if (c == cmdAlert)
          {
            alert.setString("Alert with command Ignore\n _____\n Alarm Type ");
            alert.setType(AlertType.ALARM);
            alert.setTimeout(Alert.FOREVER);
            display.setCurrent(alert);
          }
        else if (c == cmdAlertError)
          {
            alert.setString("Alert with 5 second waitting \n _____\n Error Type");
            alert.setType(AlertType.ERROR);
            alert.setTimeout(5000);
            display.setCurrent(alert);
          }
        else if (c == cmdAlertSave)
          {
            alert.setString("Alert with 3 second waitting \n _____\n Confirmation Type");
            alert.setType(AlertType.CONFIRMATION);
            alert.setTimeout(3000);
            display.setCurrent(alert);
          }
      }

  }  // end commandAction
} // end Class
#2
 Command cmdAlert = new Command("Alert", Command.SCREEN, 0);
 Command cmdAlertError = new Command("Error", Command.SCREEN, 0);
 Command cmdAlertSave = new Command("Save", Command.SCREEN, 0);

عرفنا ثلاث ازرار وسنستخدمها لاظهار الانواع المختلفة للتنبيه

   Form form;

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

   Alert alert;

التنبيه الذي سنقوم بإظهاره على الشاشة مع تغيير لشكل العرض

  public MyAlert  ()
   {

هذه المرة سنضع هذه التعليمات الابتدائية في المشيد

    alert = new Alert (" Alert Title ");

هنا قمنا بإنشاء كائن من النوع تنبيه واعطيناه العنوان Alert Title

}

    form.append("This is My Form");

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

alert1.jpg

    form.addCommand(cmdExit);
    form.addCommand(cmdAlert);
    form.addCommand(cmdAlertError);
    form.addCommand(cmdAlertSave);

اضافة الازرار الى الفورم

        else if (c == cmdAlert)

اذا قمنا باختيار هذا الزر

            alert.setString("Alert with command Ignore\n _____\n Alarm Type ");

عرض هذا النص في كائن التنبيه alert

            alert.setType(AlertType.ALARM);

ضبط نوع هذا التنبيه من النوع Alarm كما ترى في هذه الشاشة

alert2.jpg

            alert.setTimeout(Alert.FOREVER);

سيبقى هذا التنبيه معروضا على الشاشة الى ان يقوم المستخدم بكبس الزر done او ignore

            display.setCurrent(alert);

اخيرا بعد ان اعطينا هذه الخصائص للكائن alert سنقوم هنا بعرضه على الشاشة

        else if (c == cmdAlertError)

اذا قمنا باختيار هذا الزر

            alert.setString("Alert with 5 second waitting \n _____\n Error Type");

عرض هذا النص في كائن التنبيه alert

            alert.setType(AlertType.ERROR);

ضبط نوع هذا التنبيه من النوع Error كما ترى في هذه الشاشة

alert3.jpg

            alert.setTimeout(5000);

سيبقى هذا التنبيه معروضا على الشاشة لمدة خمس ثوان فقط ومن ثم يختفي للتظهر الشاشة التي كانت قبله وفي مثالنا هذا ستظهر الفورم Form

            display.setCurrent(alert);

اخيرا بعد ان اعطينا هذه الخصائص للكائن alert سنقوم هنا بعرضه على الشاشة

        else if (c == cmdAlertSave)

اذا قمنا باختيار هذا الزر

            alert.setString("Alert with 3 second waitting \n _____\n Confirmation Type");

عرض هذا النص في كائن التنبيه alert

            alert.setType(AlertType.CONFIRMATION);

ضبط نوع هذا التنبيه من النوع Confirmation كما ترى في هذه الشاشة

alert4.jpg

وهذا النوع شبيه بتنبيه "تم الحفظ"

            alert.setTimeout(3000);

سيبقى هذا التنبيه معروضا على الشاشة لمدة ثلاث ثوان فقط ومن ثم يختفي

            display.setCurrent(alert);

اخيرا بعد ان اعطينا هذه الخصائص للكائن alert سنقوم هنا بعرضه على الشاشة

تم تعديل هذه المشاركة بواسطة مصعب غيلان في 9 يوليو 2004 في 02:09

#3

المثال بعد التنفيذ

Example2.jpg

لست متواجد بشكل يومي

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

public class MyAlert extends MIDlet implements CommandListener
{
 private Display display;

Command cmdExit = new Command("Exit", Command.EXIT, 0);
Command cmdAlert = new Command("Alert", Command.SCREEN, 0);
Command cmdAlertError = new Command("Error", Command.SCREEN, 0);
Command cmdAlertSave = new Command("Save", Command.SCREEN, 0);
 Form form;

نعرف ما تعني

Alert alert;

alert من نوع Alert وهي عبارة عن رسالة تحتوي على معلومة

public MyAlert  ()
  {
   display =Display.getDisplay(this);
   form = new Form("Form Title");

شرحت سابقا

   alert = new Alert (" Alert Title ");

قمنا بانشاء Alert وعنوانها "Alert Title"

 public void startApp()
  {
   form.append("This is My Form");
   form.addCommand(cmdExit);
   form.addCommand(cmdAlert);
   form.addCommand(cmdAlertError);
   form.addCommand(cmdAlertSave);
   form.setCommandListener(this);
   display.setCurrent(form);
 }
 public void pauseApp(){ }
 public void destroyApp(boolean unconditional){}

/************* implements CommandListener ****************/
public void commandAction(Command c, Displayable s)
{
   if (  s == form )
     {
       if (c == cmdExit)
         {
           destroyApp(false);
           notifyDestroyed();
         }

ايضا شرحت سابقا

لست متواجد بشكل يومي

#5
if (c == cmdAlert)
         {
           alert.setString("Alert with command Ignore\n _____\n Alarm Type ");
           alert.setType(AlertType.ALARM);
           alert.setTimeout(Alert.FOREVER);
           display.setCurrent(alert);
         }
if (c == cmdAlertError)
         {
           alert.setString("Alert with 5 second waitting \n _____\n Error Type");
           alert.setType(AlertType.ERROR);
           alert.setTimeout(5000);
           display.setCurrent(alert);
         }


(c == cmdAlertSave)
         {
           alert.setString("Alert with 3 second waitting \n _____\n Confirmation Type");
           alert.setType(AlertType.CONFIRMATION);
           alert.setTimeout(3000);
           display.setCurrent(alert);
         }

هناكماهوموضح بالشكل سيظهر المحتوى تاع Alert الذي

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

المحتوى

alert.setString("المحتوى");

مدة البقاء

alert.setTimeout(الزمن  بالميلي ثانية);

1 ثانية = الف ميلي ثانية

نوعها

alert.setType(AlertType.النوع);

عرضعها على Display

 display.setCurrent(alert);

لست متواجد بشكل يومي

#6

شكرا اخي Student_1981

لم اكن لاقوم بالشرح لوعلمت انك قمت بشرحها

وقد قمت بكتابة الشرح يوم امس ولم استطع وضعه لذا وضعته اليوم

ايظا اشكرك جدا على شرحك لبقية المواضيع

#7

أشكرك أيها الرائع على هذا الشرح ... و بروك فيك ..

#8

أخي معصب اذا سمحت ممكن اعرف كيفية صناعة ملفات التي تنتهي بامتداد sis وان مبتدئ في البرمجة ومراسلتي على samer_salfeet@hotmail.com

#9

sis هي ملفات وذلك لعمل ال Installation لل Symbian يعني ليس لها علاقة بالجافا ابحث في النت عن مصادر لتعلم هذه اللغة

تم تعديل هذه المشاركة بواسطة مجدي محمود في 29 نوفمبر 2004 في 17:11

لست متواجد بشكل يومي

#10

شكرا على الافادة

Mohamed Deraz

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

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