English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Applet هو برنامج Java. عادةً يتم تشغيله داخل متصفح الويب الذي يدعم Java. لأن لديه دعم كامل لـ Java API، لذا هو تطبيق Java كامل الوظائف.
كما هو موضح أدناه، هناك فرق مهم بين تطبيق Java المستقل وتطبيق Applet:
يورث Applet Class من java.applet.Applet في Java.
لم يتم تعريف Applet 类 لـ main()، لذا لن يتم استدعاء طريقة main() في برنامج Applet.
تم تصميم Applet لتضمينه في صفحة HTML.
عندما يتصفح المستخدم صفحة HTML تحتوي على Applet، يتم تحميل كود Applet إلى جهاز المستخدم.
للإطلاع على Applet، تحتاج إلى JVM. يمكن أن يكون JVM إضافة إلى متصفح الويب أو بيئة تشغيل مستقلة.
يُنشأ نموذج فئة Applet على جهاز المستخدم من قبل JVM، ويُستدعى مجموعة متنوعة من طرق دورة حياة Applet.
يتمتع Applet بقواعد أمان صارمة فرضتها المتصفحات الويب، ويُطلق على ميكانيكية أمان Applet اسم أمان الساحة.
يمكن تنزيل الفئات الأخرى التي يحتاجها Applet كملف Java آرشيف (JAR).
تقدم الطريقة الأربعة في فئة Applet إطارًا يمكنك تطوير تطبيق صغير حوله:
init: يهدف هذا الطريقة إلى توفير أي إعداد مطلوب لـ Applet الخاص بك. تُستدعى هذه الطريقة بعد معالجة علامات param داخل علامة Applet.
start: تُستدعى هذه الطريقة تلقائيًا بعد استدعاء طريقة init(). تُستدعى هذه الطريقة كلما عاد المستخدم إلى الصفحة التي تحتوي على Applet.
stop: تُستدعى هذه الطريقة تلقائيًا عند انتقال المستخدم من الصفحة التي تحتوي على Applet. لذا يمكن تكرار استدعاء هذه الطريقة في نفس Applet.
destroy: تُستدعى هذه الطريقة فقط عند إغلاق المتصفح بشكل طبيعي. لأن Applet يكون فعالًا فقط داخل صفحات HTML، لذا لا يجب أن تضيع أي موارد عند مغادرة المستخدم للصفحة التي تحتوي على Applet.
paint: يتم استدعاء هذه الطريقة فور انتهاء طريقة start()، أو عندما يحتاج Applet إلى إعادة الرسم في المتصفح. في الحقيقة، تنحدر طريقة paint() من java.awt.
إليك برنامج Applet بسيط HelloWorldApplet.java:
import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void paint(Graphics g) { g.drawString("Hello World", 25, 50); } }
ستقوم هذه جمل الاستيراد بجلب الفئات التالية إلى فئتنا Applet:
java.applet.Applet. java.awt.Graphics.
بدون هذه جمل الاستيراد، لا يمكن لمحول Java التعرف على الفئات Applet و Graphics.
كل Applet هو فرع من فئة java.applet.Applet، تقدم فئة Applet الأساسية طرقًا يمكن استخدامها من قبل الفروع للحصول على معلومات سياق المتصفح والخدمات.
تقوم هذه الطرق بما يلي:
الحصول على معلمات Applet
الحصول على موقع شبكة ملف HTML الذي يحتوي على Applet
الحصول على موقع شبكة فئة Applet
طباعة معلومات حالة المتصفح
الحصول على صورة
الحصول على قطعة صوتية
إشارة إلى قطعة صوتية
تغيير حجم هذا Applet
بالإضافة إلى ذلك، تقدم فئة Applet واجهة توفرها للمشاهد أو المتصفح للحصول على معلومات حول Applet وتحكم في تشغيل Applet.
المشاهدون قد يكونون:
المعلومات حول مؤلف Applet ونسخته وحقوق الطبع والنشر
وصف المعلمات التي يمكن تمييزها من قبل Applet
تحديد Applet
تدمير Applet
بدء تشغيل Applet
إنهاء تشغيل Applet
تقدم فئة Applet تنفيذًا افتراضيًا لهذه الطرق، التي يمكن تعديلها عند الحاجة.
تم كتابة جميع Applets "Hello, World" وفقًا للمواصفات القياسية. يتم تعديل الطريقة الوحيدة هي paint.
Applet هو برنامج Java. عادةً ما يتم تشغيله داخل متصفحات الويب التي تدعم Java. لأن لديه دعم كامل لـ API Java، لذا فإن Applet هو تطبيق Java كامل الميزات.
وسم <applet> هو أساس تضمين Applet في ملف HTML. إليك مثال على استدعاء applet "Hello World"؛
<html> <title>The Hello, World Applet</title> <hr> <applet code="HelloWorldApplet.class" width="320" height="120"> إذا كان متصفحك يدعم Java، سيظهر "Hello, World" سيظهر الرسالة هنا. </applet> <hr> </html>
ملاحظة: يمكنك الرجوع إلى وسم Applet في HTML للحصول على معلومات إضافية حول كيفية استدعاء applet من HTML.
<applet> الميزة تحدد الفئة التي يتم تشغيلها من Applet. width و height يستخدمان لتعيين حجم واجهة المستخدم الابتدائية لـ Applet. يجب على Applet استخدام </applet> لإنهاء التشغيل.
إذا كان Applet يقبل المعاملات، فإن يجب إضافة قيمة المعامل في علامة <param>، التي توجد بين علامات <applet> و</applet>. يغيب المتصفح عن النصوص والعلامات الأخرى بين علامات applet.
المتصفحات التي لا تدعم Java لا يمكنها تنفيذ <applet> و</applet>. لذلك، فإن أي شيء يتم عرضه بين العلامات ويكون غير ذي علاقة بالapplet في المتصفحات التي لا تدعم Java هو مرئي.
يبحث مشاهد أو المتصفح في موقع الوثيقة عن كود Java المترجم، ويجب تحديد مسار الوثيقة باستخدام خاصية codebase لقيمة <applet>.
كما يظهر فيما يلي:
<applet codebase="http://amrood.com/applets" code="HelloWorldApplet.class" width="320" height="120">
إذا كان Applet موجودًا في حزمة وليس في الحزمة الافتراضية، فإن الحزمة الموجودة يجب أن يتم تحديدها في خاصية code، مثلًا:
<applet code="mypackage.subpackage.TestApplet.class" width="320" height="120">
يوضح المثال التالي كيفية استخدام Applet للرد على المعاملات المحددة في الملف. يعرض هذا Applet رسمًا لشبكة من اللون الأسود واللون الثاني.
يحدد اللون الثاني و حجم كل عمود من خلال معاملات Applet في الوثيقة.
يحصل CheckerApplet على معاملاته داخل طريقة init(). يمكن أيضًا الحصول على معاملاته داخل طريقة paint(). ومع ذلك، من المريح والفعال الحصول على القيم و حفظ الإعدادات عند بدء Applet بدلاً من الحصول عليها في كل刷新.
يتم استدعاء طريقة init() من قبل مشاهد Applet أو المتصفح في كل مرة يتم فيها تشغيل Applet. بعد تحميل Applet، يتم استدعاء طريقة init() على الفور (لا يقوم Applet.init() بأي شيء)، ويجب تعديل التنفيذ الافتراضي للطريقة لضيف بعض الكود التكويني المخصص.
يستخدم طريقة Applet.getParameter() للحصول على قيمة المعامل من خلال اسم المعامل. إذا كانت القيمة التي يتم الحصول عليها هي رقم أو أي بيانات غير نصية، فإنها يجب أن يتم تحويلها إلى نوع النص.
المثال التالي هو تعديل CheckerApplet.java:
import java.applet.*; import java.awt.*; public class CheckerApplet extends Applet { int squareSize = 50; // إعداد حجم افتراضي public void init() {} private void parseSquareSize(String param) {} private Color parseColor(String param) {} public void paint(Graphics g) {} }
إليك طريقة init() في فئة CheckerApplet وطرق parseSquareSize() الخاصة:
public void init() { String squareSizeParam = getParameter("squareSize"); parseSquareSize(squareSizeParam); String colorParam = getParameter("color"); Color fg = parseColor(colorParam); setBackground(Color.black); setForeground(fg); } private void parseSquareSize(String param) { if (param == null) return; try { squareSize = Integer.parseInt(param); } catch (Exception e) { // احتفظ بالقيمة الافتراضية } }
يدعو Applet إلى استخدام parseSquareSize() لتحويل معامل squareSize. تقوم طريقة parseSquareSize() بتعريف مكتبة طريقة Integer.parseInt() التي تقوم بتحويل سلسلة إلى عدد صحيح، وتبحث عن استثناء عند عدم صحة المعامل.
لذلك، طريقة parseSquareSize() هي أيضًا ملتزمة باستثناء الاستثناءات ولا تسمح لـ Applet باستقبال إدخال غير صالح.
Applet يدعو إلى استخدام طريقة parseColor() لتحويل معامل اللون إلى قيمة Color. تقوم طريقة parseColor() بجلسة مقارنة سلسلة من الأسماء لتنسيق قيمة المعامل مع الأسماء المسبقة لألوان مسبقة.
هذا المثال هو ملف HTML يحتوي على كائن CheckerApplet. يحدد ملف HTML المعلمتين للـ applet باستخدام علامات <param>.
<html> <title>Checkerboard Applet</title> <hr> <applet code="CheckerApplet.class" width="480" height="320"> <param name="color" value="blue"> <param name="squaresize" value="30"> </applet> <hr> </html>
ملاحظة: اسماء المعلمات غير حساسة للكتابة.
تحويل تطبيق Java التفاعلي (الذي يعني، التطبيقات التي تستخدم AWT وتستخدم بدء التشغيل java) إلى applet مدمج في صفحة الويب بسيط للغاية.
هناك عدة خطوات لتحويل التطبيق إلى Applet:
كتابة صفحة HTML تحتوي على علامات يمكنها تحميل كود applet.
كتابة فرع لـ JApplet، قم بتعيينه كـ public. وإلا لا يمكن تحميل Applet.
إزالة طريقة main() للتطبيق. لا قم ببناء نافذة إطار التطبيق، لأن تطبيقك سيتم عرضه في المتصفح.
انقل كود التهيئة من طريقة بناء نافذة التطبيق إلى طريقة init() لـ Applet، لا تحتاج إلى بناء كائن Applet بشكل مباشر، سيتولى المتصفح إنشاء كائن من خلال استدعاء طريقة init().
إزالة استدعاء setSize()، بالنسبة لـ Applet، تم تحديد الحجم من خلال معلمات width و height في ملف HTML.
إزالة استدعاء setDefaultCloseOperation()، لا يمكن إغلاق applet، وسيتم إنهاءه مع مغادرة المتصفح.
إذا قام التطبيق بتشغيل setTitle()، قم بإزالة استدعاء هذا الطريقة. لا يمكن لـ applet أن يكون هناك شريط العنوان. (بالطبع يمكنك تسمية صفحة الويب الخاصة بك باستخدام علامة title في html).
لا تدع setVisible(true) يتم استدعاؤها،Applet يتم عرضه تلقائيًا.
يورث كلاس Applet العديد من طرق معالجة الحدث من كلاس Container. يحدد كلاس Container عدة طرق مثل processKeyEvent() و processMouseEvent()، تستخدم لمعالجة نوع معين من الأحداث، بالإضافة إلى طريقة لالتقاط جميع الأحداث تسمى processEvent.
للرد على أحد الأحداث، يجب على Applet إعادة كتابة طريقة معالجة الحدث المناسبة.
import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.applet.Applet; import java.awt.Graphics; public class ExampleEventHandling extends Applet implements MouseListener { StringBuffer strBuffer; public void init() { addMouseListener(this); strBuffer = new StringBuffer(); addItem("تهيئة البرنامج الصغير "); } public void start() { addItem("بدء البرنامج الصغير "); } public void stop() { addItem("توقف البرنامج الصغير "); } public void destroy() { addItem("تحميل البرنامج الصغير"); } void addItem(String word) { System.out.println(word); strBuffer.append(word); repaint(); } public void paint(Graphics g) { // رسم دائرة حول منطقة عرض البرنامج الصغير. g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); // عرض النص داخل المربع. g.drawString(strBuffer.toString(), 10, 20);}} } public void mouseEntered(MouseEvent event) { } public void mouseExited(MouseEvent event) { } public void mousePressed(MouseEvent event) { } public void mouseReleased(MouseEvent event) { } public void mouseClicked(MouseEvent event) { addItem("نقر الفأرة! "); } }
كما يلي استدعاء هذا الآبلت:
<html> <title>معالجة الحدث</title> <hr> <applet code="ExampleEventHandling.class" width="300" height="300"> </applet> <hr> </html>
عند بدء التشغيل، يعرض الآبلت "�始化 الآبلت. بدء تشغيل الآبلت."، ثم عند النقر على المربع يتعرض "نقر الفأرة".
يمكن للآبلت عرض GIF، JPEG، BMP وأشكال صور أخرى. لتعديل الصورة في الآبلت، يجب استخدام طريقة drawImage() من فئة java.awt.Graphics.
السطر التالي يوضح جميع الخطوات لعرض الصورة:
import java.applet.*; import java.awt.*; import java.net.*; public class ImageDemo extends Applet { private Image الصورة; private AppletContext context; public void init() { context = this.getAppletContext(); String الرابطصورة = this.getParameter("image"); إذا (الرابطصورة == null) { الرابطصورة = "java.jpg"; } try { URL الرابط = new URL(this.getDocumentBase(), الرابطصورة); الصورة = التطبيق.الحصولعلىصورة(الرابط); }catch(MalformedURLException e) { e.printStackTrace(); // عرض في شريط الحالة للمتصفح التطبيق يعرض حالة("Could not load image!"); } } public void paint(Graphics g) { context.showStatus("Displaying image"); g.drawImage(image, 0, 0, 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } }
هناك كيفية استدعاء هذا الـ applet:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="300" height="200"> <param name="image" value="java.jpg"> </applet> <hr> </html>
يمكن للـ Applet تشغيل الصوت باستخدام واجهة AudioClip الموجودة في مكتبة java.applet. وحددت واجهة AudioClip ثلاث طرق:
public void play(): تشغيل قطعة الصوت من البداية مرة واحدة.
public void loop(): تشغيل قطعة الصوت في دورة
public void stop(): توقف عن تشغيل قطعة الصوت
للحصول على عنصر AudioClip، يجب عليك استدعاء طريقة getAudioClip() من فئة Applet. سواء كان URL يشير إلى ملف صوتي حقيقي أم لا، فإن هذه الطريقة تعود فورًا.
سيتم تنزيل ملف الصوت فقط عند الحاجة إلى تشغيله.
أعطي مثال يوضح جميع الخطوات لتشغيل الصوت:
import java.applet.*; import java.awt.*; import java.net.*; public class AudioDemo extends Applet { private AudioClip clip; private AppletContext context; public void init() { context = this.getAppletContext(); String audioURL = this.getParameter("audio"); if(audioURL == null) { audioURL = "default.au"; } try { URL url = new URL(this.getDocumentBase(), audioURL); clip = context.getAudioClip(url); }catch(MalformedURLException e) { e.printStackTrace(); context.showStatus("Could not load audio file!"); } } public void start() { if(clip != null) { clip.loop(); } } public void stop() { if(clip != null) { clip.stop(); } } }
كيفية استدعاء applet كما يلي:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="0" height="0"> <param name="audio" value="test.wav"> </applet> <hr>
يمكنك استخدام ملف test.wav الموجود على جهازك للتحقق من المثال أعلاه.