سنتعرف في هذا الجزء على كيفية التعامل مع صناديق الرسائل او التنبيه 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



