آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش Java-آموزش Applet Basics در جاوا

 

یک applet یک برنامه ی جاوا می باشد که در مرورگر وب اجرا می شود. یک applet می تواند یک برنامه ی کاملا کاربردی در جاوا باشد، زیرا کل Java API را در دسترس دارد.

تفاوت های مهمی بین یک applet و یک نرم افزار مستقل جاوا وجود دارد، که عبارتند از:

·         یک applet یک گروه در جاواست که گروه java.applet.Applet را گسترش می دهد.

·         یک متود main() روی یک applet در خواست نمی شود و یک applet آن را تعریف نخواهد کرد.

·         Applet ها طوری طراحی شده اند که در داخل یک صفحه ی HTML اجرا شوند.

·         وقتی که یک یوزر یک صفحه ی HTML را مشاهده می کند که حاوی یک applet است، کد مربوط به applet برای سیستم یوزر دانلود می شود.

·         برای مشاهده ی یک applet یک JVM لازم می باشد. JVM می تواند یا plug-in از مرور گر وب باشد یا یک محیط مجزا مربوط به زمان اجرا (runtime).

·         JVM روی سیستم یوزر یک نمونه گروه applet ایجاد می کند و در طول دوره ی applet متودهای زیادی را در خواست می کند.

·         Applet ها دارای قوانین امنیتی خشکی هستند که توسط مرورگر وب تقویت می شوند. امنیت یک applet معمولا با عنوان sandbox security (امنیت در جعبه شن) مورد اشاره قرار می گیرد، که applet را با کودکی مقایسه می کند که در یک جعبه ی شن بازی می کند و قوانین زیادی را باید دنبال کند.

·         گروه های دیگری که applet نیاز دارد نیز می توانند در یک فایل مجزای Java Archive (JAR)  دانلود شوند.

طول عمر یک Applet:

چهار متود در گروه applet چارچوبی را به شما ارائه می دهند که طبق آن applet مهم می توانید بسازید.

·         Init: این متود برای هر مقداردهی اولیه ی مورد نیاز برای applet شما در نظر گرفته می شود. این متود پس از پردازش برچسب های param در داخل برچسب applet فراخوانده می شود.

·         Start: پس از اینکه مرورگر متود init را فرامی خواند، این متود به طور خودکار فراخوانده می شود. همچنین وقتی یوزر پس از خروج از صفحات دیگر وارد صفحه ای حاوی applet می شود، این متود فراخوانده می شود.

·         Stop: وقتی یوزر از صفحه ای حاوی applet خارج می شود، این متود به طور خودکار فراخوانده می شود. بنابراین این متود می تواند به طور مکرر در همان applet فراخوانده شود.

·         destroy: این متود تنها زمانی فراخوانده می شود مرورگر به طور طبیعی خاموش شود. زیرا applet ها ابزاری هستند که در یک صفحه ی HTML وجود دارند، شما نباید پس از اینکه یوزر صفحه ی حاوی applet را ترک می کند، منابع را رها کنید.

·         paint: فورا پس از متود start() و همچنین هر زمانی که applet لازم دارد مجددا خود را طراحی کند، فراخوانده می شود. متود paint() در واقع از java.awt نشات می گیرد.

A "Hello, World" Applet:

 

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 به آن اشاره درد، تشخیص نمی دهد.

The Applet CLASS:

 

هر applet گستره ای از java.applet.Applet class  می باشد. Applet پایه متودهایی ارائه می دهد که ممکن است یک گروه استخراج شده ی applet برای برقراری اطلاعات و سرویس هایی از کانتکست مرورگر فرا می خوانند.

اینها حاوی متودهایی هستند که موارد زیر را انجام می دهند:

·         پارامترهای applet را به دست می آورند.

·         موقعیت شبکه ی فایل HTML را که حاوی applet است، به دست می آورند.

·         موقعیت شبکه ی مسیر گروه applet را به دست می آورد.

·         یک پیام وضعیت در مرورگر چاپ می کند.

·         یک تصویر را واکشی (fetch) می کند.

·         یک قطعه ی صوتی را واکشی (fetch) می کند.

·         یک قطعه ی صوتی را را اجرا می کند.

·         یک applet را تغییر اندازه می دهد.

علاوه بر این یک گروه Applet یک اینترفیس را ارائه می دهد که توسط آن نظاره گر یا مرورگر اطلاعاتی در مورد applet ارائه می دهد و اجرای applet را کنترل می کند. نظاره گر ممکن است:

·         اطلاعاتی در مورد نویسنده، ورژن و حق چاپ applet تقاضا کند.

·         توضیحی از پارامترهایی که applet تشخیص می دهد، تقاضا کند.

·         Applet را مقدار دهی کند.

·         Applet را از بین ببرد.

·         اجرای applet را آغاز کند.

·         اجرای applet را متوقف کند.

گروه Applet اجراهای پیش فرضی از هر کدام از این متودها ارائه می دهد. این اجراها ممکن است در صورت لزوم لغو شوند.

"Hello, World" applet به محض ایستادن کامل می شود. تنها متود لغو شده، متود paint می باشد.

 

درخواست یک Applet:

یک applet ممکن است به وسیله ی تعبیه ی مسیرهایی در یک فایل HTML و مشاهده ی فایل از طریق یک نظاره گر applet یا مرورگر Java-enabled، درخواست شود.

برچسب <applet> مبنایی برای تعبیه ی یک applet در یک فایل HTML باشد. در زیر مثالی از درخواست "Hello, World" applet را مشاهده می کنید:

<html>

<title>The Hello, World Applet</title>

<hr>

<applet code="HelloWorldApplet.class" width="320" height="120">

    If your browser was Java-enabled, a "Hello, World"

    message would appear here.

</applet>

<hr>

</html>

 

براساس مثال بالا در اینجا در اینجا متال زنده ای از applet مشاهده می کنید: Applet Example.

نکته: برای درک بیشتر فراخوانی applet از HTML می توانید به HTML Applet Tag   مراجعه کنید.

کد مربوط به برچسب &lt;applet> نیاز می باشد. این برچسب گروه Applet را برای اجرا تعیین می کند. تعیین طول و عرض نیز برای تعیین اندازه ی اولیه ی پنل که در آن applet اجرا نی شود، ضروری می باشد. مسیر applet باید به یک برچسب &lt;/applet> بسته شود.

اگر یک applet پارامترها را می گیرد، مقادیر ممکن است با افزودن برچسب های &lt;param> بین &lt;applet>  و  </applet> برای پارامترها منتقل شوند. مرورگر متن و همچنین دیگر برچسب ها بین برچسب های applet را نادیده می گیرد.

مرورگرهای Non-Java-enabled پردازش &lt;applet>  و  </applet> را انجام نمی دهند. بنابراین هرچیزی که بین برچسب ها ظاهر می شود، که در ارتباط با applet نیست، در مرورگرهای non-Java-enabled قابل مشاهده می باشد.

مرورگر و نظاره گر به دنبال کد کامپایل شده ی جاوا در موقعیت داکیومنت هستند. در غیر این صورت برای تعیین، از ویژگی کد برچسب &lt;applet> استفاده کنید که در زیر نمایش داده شده است:

<applet codebase="http://amrood.com/applets"

        code="HelloWorldApplet.class" width="320" height="120">

 

اگر یک applet درپوشه ای به غیر از پوشه ی پیش فرض قرار دارد، پوشه ی نگهداری باید با استفاده از کاراکتر (.) مشخص شود تا مولفه های package/class  را مجزا کند.

<applet code="mypackage.subpackage.TestApplet.class"

        width="320" height="120">

به دست آوردن پارامترهای Applet:

مثال زیر چگونگی ساخت یک applet را نشان می دهد که به پارامترهای setup که در داکیومنت مشخص شده اند، پاسخ می دهد. این applet یک الگوی شطرنجی از سیاه و یک رنگ دوم نمایش می دهد.

رنگ دوم و اندازه ی هر مربع ممکن است به عنوان پارامترهایی برای applet در داخل داکیومنت مشخص شوند.

CheckerApplet پارامترهای خود را از متود init() می گیرد. همچنین ممکن است پارامترهای خود را از متود paint() بگیرد. به هرحال به دست آوردن مقادیر و ذخیره ی تنظیمات در هنگام شروع applet، به جای انجام آن در هر refresh، مناسب و ضروری می باشد.

applet viewer یا مرورگر متود init()  را از هر applet که اجرا می کند، فرا می خواند. نظاره کننده init() را فورا پس از بارگذاری applet فرامی خواند. (Applet.init() در اجرا هیچ کاری انجام نمی دهد.). اجرای پیش فرض را لغو کنید تا کد دهی اولیه ی سفارشی (custom initialization code) را وارد کنید.

متود Applet.getParameter() بازخوانی یک پارامتر را با توجه به نام پارامتر انجام می دهد. (مقدار یک پارامتر همیشه یک رشته می باشد.). اگر مقدار عددی یا داده ی غیرکاراکتری دیگر باشد، رشته باید تجزیه شود.

در زیر اسکلتی از CheckerApplet.java را مشاهده می کنید:

import java.applet.*;

import java.awt.*;

public class CheckerApplet extends Applet

{

   int squareSize = 50;// initialized to default size

   public void init () {}

   private void parseSquareSize (String param) {}

   private Color parseColor (String param) {}

   public void paint (Graphics g) {}

}

در اینجا متودهای CheckerApplet's init() و 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) {

     // Let default value remain

   }

}

Applet در واقع parseSquareSize() را برای تجزیه ی پارامتر squareSize فرا می خواند. parseSquareSize() متود Integer.parseInt() را فرامی خواند که یک رشته را تجزیه کرده و یک عدد صحیح بازمی گرداند. هرزمان که argument نامعتبر باشد، Integer.parseInt() یک exception وارد می کند.

بنابراین به جای اجازه دادن به در شکست خوردن با یک ورودی بد، parseSquareSize() استثنا را می گیرد.

برای تجزیه ی پارامتر رنگ به مقدار Color، اپلت parseColor() را فرامی خواند. برای هماهنگی مقدار پارامتر با نام یک رنگ از پیش تعریف شده، parseColor() یک سری مقایسه روی رشته انجام می دهد. برای کار کردن این applet، لازم است این متودها را اجرا کنید.

تعیین پارامترهای Applet:

در زیر مثالی از یک فایل HTML با CheckerApplet تعبیه شده در آن را مشاهده می کنید. فایل HTML به وسیله ی برچسب &lt;param> هردو پارامتر را برای applet تعیین می کند.

<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>

 

نکته: نام های پارامترها موارد هوشمند نیستند.

تبدیل برنامه به applet:

تبدیل یک برنامه ی گرافیکی جاوا (برنامه ای است که از AWT استفاده می کند و شما می توانید با آغازگر جاوا آن را شروع کنید.). به یک applet که می توانید در یک صفحه ی وب جای دهید، آسان می باشد.

در اینجا مراحل معینی برای تبدیل یک برنامه به یک applet را مشاهده می کنید:

·         با برچسب مناسب یک صفحه ی HTML برای بارگذاری کد applet ایجاد کنید.

·         یک زیرمجموعه از گروه JApplet تعیین کرده و این گروه را عمومی سازید. در غیر این صورت applet نمی تواند بارگذاری شود.

·         متود اصلی را در برنامه حذف کنید. نیازی به ساخت یک چارچوب پنجره (frame window) برای برنامه نیست. برنامه ی شما در داخل مرورگر نمایش داده خواهد شد.

·         هر کد دهی اولیه (initialization code) را از چارچوب پنجره ی سازنده به متود init از applet حرکت دهید. لازم نیست آبجکت applet را به طور واضح بسازید. مرورگر برای شما نمونه گذاری کرده و متود init را برای شما فرامی خواند.

·         فراخوانی به setSize را حذف کنید؛ برای applet ها اندازه گیری با طول و عرض پارامترها در فایل HTML انجام می شود.

·         فراخوانی به setDefaultCloseOperation را حذف کنید. یک applet بسته نمی شود، بلکه وقتی مرورگر خارج می شود، خاتمه می یابد.

·         اگر برنامه setTitle را فرا می خواند، فراخوانی متود را حذف کنید. Applet ها نمی توانند دارای نوار عنوان (title bar) باشند. ( البته شما می توانید خود صفحه ی وب را با استفاده از برچسب عنوان HTML نام گذاری کنید. )

·         setVisible(true) را فرا نخوانید. Applet به طور خودکار نمایش داده می شود.

کنترل رویداد:

Applet ها یک گروه از متودهای event-handling را از گروه 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("initializing the apple ");

    }

 

    public void start() {

        addItem("starting the applet ");

    }

 

    public void stop() {

        addItem("stopping the applet ");

    }

 

    public void destroy() {

        addItem("unloading the applet");

    }

 

    void addItem(String word) {

        System.out.println(word);

        strBuffer.append(word);

        repaint();

    }

 

    public void paint(Graphics g) {

          //Draw a Rectangle around the applet's display area.

        g.drawRect(0, 0,

                      getWidth() - 1,

                      getHeight() - 1);

 

          //display the string inside the rectangle.

        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("mouse clicked! ");

    }

}

 

اکنون اجازه بدهید این متود را مانند زیر فراخوانی کنیم:

<html>

<title>Event Handling</title>

<hr>

<applet code="ExampleEventHandling.class"

        width="300" height="300">

</applet>

<hr>

</html>

 

معمولا applet مقداردهی applet، شروع applet ("initializing the applet. Starting the applet.") را نمایش خواهد داد. سپس هنگامی که در داخل مثلث کلیک کنید، پس از آن کلیک ماوس نمایش داده خواهد شد.

براساس مثال های بالا، در اینجا مثال زنده ای از applet مشاهده می کنید: Applet Example.

نمایش تصاویر:

یک applet می تواند تصاویری با فرمت GIF, JPEG, BMP و غیره نمایش دهد. برای نمایش یک تصویر در داخل applet، از متود drawImage() استفاده می کنید که در گروه java.awt.Graphics یافت می شود.

مثال زیر تمام مراحل نمایش تصاویر را نشان می دهد:

import java.applet.*;

import java.awt.*;

import java.net.*;

public class ImageDemo extends Applet

{

  private Image image;

  private AppletContext context;

  public void init()

  {

      context = this.getAppletContext();

      String imageURL = this.getParameter("image");

      if(imageURL == null)

      {

         imageURL = "java.jpg";

      }

      try

      {

         URL url = new URL(this.getDocumentBase(), imageURL);

         image = context.getImage(url);

      }catch(MalformedURLException e)

      {

         e.printStackTrace();

         // Display in browser status bar

         context.showStatus("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 فرا بخوانید. متود getAudioClip() فورا گزارش می دهد که آیا 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>

</html>

 

می توانید از test.wav در کامپیوتر خود استفاده کنید تا مثال بالا را امتحان کنید.

 

 

 

  • 3332
  •    0
  • تاریخ ارسال :   1394/07/27

دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .