تعرفنا سابقا على كيفية التعامل مع الفورم Form
وكيفية اضافة كائن من النوع TextField الى الفورم
سنتعرف الان على الصنف Image وكيفية اضافتها الى الفورم
قبل هذا يجب علينا معرفة ثلاث اشياء
1 - يجب علينا اولا معرفة كيفية انشاء صورة
لانشاء صورة وربطها مع التطبيق يجب علينا استخدام الطريقة cteateImage التابعة للصنف Image
سيكون الكود المستخدم كالاتي
try{
Image img = Image.createImage( /* اسم ملف الصورة مع الدليل */ );
} catch (java.io.IOException e)
{ /* اظهار رسالة خطأ */ }وسنلاحظ هنا انا استخدما الاستناءات Exception ومعالجة الاخطاء try و catch
والسبب في ذلك ان التطبيق يقوم بالبحث عن الصورة في وقت التنفيذ فإذا لم يحصل عليها فإن التطبيق يفشل اذا لم نقم بمعالجة الخطأ
2 - يجب علينا معرفة الانماط التي يمكن عرضها في تطبيق J2ME
الى الان يوجد نوع واحد فقط من الصور التي يمكن اضافتها الى التطبيق هذا النوع هو
PNG Image FormatPNG (Portable Network Graphics)
3 - كيفية اضافة الصورة الى الحزمة JAR
باستخدام Wireless ToolKits يمكنك استخدام هذا الامر
/*دليل الجافا*/\bin\jar.exe umf MANIFEST.MF MyApp.jar Image.png
يجب الاتنباه هنا اننا استخدمنا العبارة umf
ايظا يستحسن ان تكون الصورة موجودة في نفس الدليل
اما اذا وضعتها في دليل اخر فانه يجب كتابة اسم الدليل كاملا مع ملاحظة انه سيتم انشاء نفس الدليل في الكلاسات المحزومة JAR
لا يوجد اي مشيد Constructor لصنف Image مباشرة بعد تعريف كائن من نوع Image يتم استخدام createImage
والسبب ان عملية انشاء كائن Image تحدث تلقائيا عند استخدام الطريقة createImage
هناك عدة طرق لاستخدام الطريقة createImage
public static Image createImage(byte[] imageData, int imageOffset, int imageLength)
imageData : مصفوفة تحتوي على بيانات النقاط للصورة على شكل بايتات Bytes
مثال على ذلك عند تحويل كائن من نوع صورة الى String باستخدام الدالة toString ومن ثم تحويلها الى Bytes باستخدام الدالة getBytes
public static Image createImage(Image source)
source : كائن صورة موجود من قبل نريد نسخه الى كائن اخر باستخدام هذه الطريقة
اي ان هذة الطريقة تستخدم فقط لنسخ كائن من نوع Image الى كائن اخر من نفس النوع
public static Image createImage(int width, int height)
انشاء مساحة فارغة من نمط رسومي لاجل اضافة اي رسومات او صور لهذه المساحة
height : ارتفاع هذه المساحة
width : عرض هذة المساحة
public static Image createImage(String name)
انشاء كائن من صورة موجودة على شكل ملف محزوم مع الكلاسات المحزومة في الملف .jar
ويجب علينا كتابة اسم الملف مع الدليل الموجود فيه ملف الصورة
وهذة الطريقة هي المستخدمة بكثرة
والان سنضع مثالا يوضح كل هذا
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class MyForm extends MIDlet implements CommandListener
{
Display display;
Form frm;
Command exitCommand;
public MyForm()
{
frm = new Form("Form Title");
display = Display.getDisplay(this);
exitCommand = new Command("Exit", Command.EXIT, 1);
}
public void startApp()
{
frm.append("This text in Form");
addImageToForm();
frm.append("\nwww.arabteam2000.com");
frm.addCommand(exitCommand);
frm.setCommandListener(this);
display.setCurrent(frm);
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
public void addImageToForm()
{
try{
Image img = Image.createImage(
"/Test.png"); // اسم ملف الصورة مع الدليل
frm.append(img);
} catch (java.io.IOException e)
{
Alert alert = new Alert ( "Error: Load Image" );
alert.setString( e.getMessage() );
display.setCurrent(alert);
}
}
public void commandAction(Command c, Displayable s)
{
if (c == exitCommand)
{
destroyApp(false);
notifyDestroyed();
}
}
}
وهذا هو التطبيق مع البرنامج التنفيذي والصورة