آشنایی با اپلت ها (Applet) در جاوا

+1
+39
1394/02/22 0 897 م.مطلبی

یکی از نقاط قوت جاوا که باعث شده این زبان برنامه نویسی از قدرت بالایی برخوردار باشد استفاده و ارائه Applet ها به برنامه نویسان می باشد. اپلت ها برنامه های جاوا هستند که درون کد های html یک صفحه وب گنجانده می شوند و در زمان بارگذاری صفحه وب مورد نظر این برنامه ها اجرا می شوند.توجه شود که به دلیل اهمیت موضوع اپلت ها هم از امنیت بالایی برخوردارند و هم اینکه قابلیت انتقال را دارند . منظور از قابلیت انتقال این است که برنامه ها بر روی تمامی سیستم ها و مرورگرها اجرا می شوند . در برخی موارد در صورتی که از مرورگر internet explorer استفاده می نمایید ممکن است که اپلت اجرا نشود. برای رفع این مشکل باید پلاگین جاوا را از اینترنت دانلود نمایید و سپس آن را نصب کنید . از این پس تمامی اپلت های جاوا بر روی مرورگر شما اجرا خواهند شد.

برای دانلود پلاگین ها می توانید از لینک زیر استفاده کنید.

دانلود پلاگن جاوا برای مرورگر

نحوه استفاده از اپلت ها در کد های html را در زیر می توانید مشاهده کنید.برنامه های جاوا برای اجرا باید کامپایل شوند که خروجی آن یک فایل با پسوند class می باشد . که از آن در کد زیر استفاده شده است.


<html>

<applet code="subsun_class_clock.class" width="400" height="400">
</applet>

</html>

آشنایی با دستور Appletviewer در جاوا

در هنگام برنامه نویسی قبل از قرار دادن کدهای مربوط به اپلت درون کدهای وب سایت باید آن را تست کنیم. برای این منظور دستور appletviewer به کمک برنامه نویسان شتافته است. در زمان نصب جاوا که در درس های قبل آن را فرا گرفتید این دستور نیز به ما ارائه شده است . در ادامه کار می خواهیم با استفاده از یک تمرین عملی نحوه استفاده از این دستور را به شما دوستان نشان دهیم.

اجرای اپلت Clock

در این بخش می خواهیم اپلت Clock را که در مسیر نصب جاوا قرار دارد را اجرا کنیم . لازم به توضیح است که در زمان نصب جاوا بصورت خودکار چندین اپلت بصورت پیش فرض برای استفاده ما قرار داده شده است. ما در این بخش می خواهیم یکی از این اپلت ها را اجرا کنیم. به همین منظور ابتدا وارد مسیر نصب برنامه جاوا شوید . درون فولدر jdk مسیر demo\applets\Clock را دنبال کنید. در آنجا فایل های اپلت Clock را مشاهده خواهید کرد. ممکن است فولدر demo در برنامه جاوا شما وجود نداشته باشد .شما می توانید از کد های زیر برای ادامه آموزش استفاده کنید. به همین منظور پروژه ایجاد شده در دروس قبلی را باز کنید و کلاس جدیدی با نام subsun_class_clock به پکیج subsun_package اضافه کنید .و درون آن را بصورت زیر پر نمایید و سپس آن را ذخیره کنید.

package subsun_package;
import java.util.*;
import java.awt.*;
import java.applet.*;
import java.text.*;

public class subsun_class_clock extends Applet implements Runnable {
     private volatile Thread timer;      // The thread that displays clock
     private int lastxs, lastys, lastxm,
                    lastym, lastxh, lastyh; // Dimensions used to draw hands
     private SimpleDateFormat formatter; // Formats the date displayed
     private String lastdate;                // String to hold date displayed
     private Font clockFaceFont;           // Font for number display on clock
     private Date currentDate;               // Used to get date to display
     private Color handColor;                // Color of main hands and dial
     private Color numberColor;           // Color of second hand and numbers
     private int xcenter = 80, ycenter = 55; // Center position

     public void init() {
          int x,y;
          lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;
          formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy",
                                                   Locale.getDefault());
          currentDate = new Date();
          lastdate = formatter.format(currentDate);
          clockFaceFont = new Font("Serif", Font.PLAIN, 14);
          handColor = Color.red;
          numberColor = Color.darkGray;

          try {
               setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),
                                                                  16)));
          } catch (NullPointerException e) {
          } catch (NumberFormatException e) {
          }
          try {
               handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),
                                                             16));
          } catch (NullPointerException e) {
          } catch (NumberFormatException e) {
          }
          try {
               numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),
                                                                  16));
          } catch (NullPointerException e) {
          } catch (NumberFormatException e) {
          }
          resize(300,300);                // Set clock window size
     }

     // Paint is the main part of the program
     public void update(Graphics g) {
          int xh, yh, xm, ym, xs, ys;
          int s = 0, m = 10, h = 10;
          String today;

          currentDate = new Date();
          
          formatter.applyPattern("s");
          try {
               s = Integer.parseInt(formatter.format(currentDate));
          } catch (NumberFormatException n) {
               s = 0;
          }
          formatter.applyPattern("m");
          try {
               m = Integer.parseInt(formatter.format(currentDate));
          } catch (NumberFormatException n) {
               m = 10;
          }     
          formatter.applyPattern("h");
          try {
               h = Integer.parseInt(formatter.format(currentDate));
          } catch (NumberFormatException n) {
               h = 10;
          }
     
          // Set position of the ends of the hands
          xs = (int) (Math.cos(s * Math.PI / 30 - Math.PI / 2) * 45 + xcenter);
          ys = (int) (Math.sin(s * Math.PI / 30 - Math.PI / 2) * 45 + ycenter);
          xm = (int) (Math.cos(m * Math.PI / 30 - Math.PI / 2) * 40 + xcenter);
          ym = (int) (Math.sin(m * Math.PI / 30 - Math.PI / 2) * 40 + ycenter);
          xh = (int) (Math.cos((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30
                     + xcenter);
          yh = (int) (Math.sin((h*30 + m / 2) * Math.PI / 180 - Math.PI / 2) * 30
                     + ycenter);
     
          // Get the date to print at the bottom
          formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");
          today = formatter.format(currentDate);

          g.setFont(clockFaceFont);
          // Erase if necessary
          g.setColor(getBackground());
          if (xs != lastxs || ys != lastys) {
               g.drawLine(xcenter, ycenter, lastxs, lastys);
               g.drawString(lastdate, 5, 125);
          }
          if (xm != lastxm || ym != lastym) {
               g.drawLine(xcenter, ycenter-1, lastxm, lastym);
               g.drawLine(xcenter-1, ycenter, lastxm, lastym);
          }
          if (xh != lastxh || yh != lastyh) {
               g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
               g.drawLine(xcenter-1, ycenter, lastxh, lastyh);
          }

          // Draw date and hands
          g.setColor(Color.green);
          g.drawString("subsun.ir", 55, 75);
          g.setColor(numberColor);
          g.drawString(today, 5, 125);
          g.drawLine(xcenter, ycenter, xs, ys);
          g.setColor(handColor);
          g.drawLine(xcenter, ycenter-1, xm, ym);
          g.drawLine(xcenter-1, ycenter, xm, ym);
          g.drawLine(xcenter, ycenter-1, xh, yh);
          g.drawLine(xcenter-1, ycenter, xh, yh);
          lastxs = xs; lastys = ys;
          lastxm = xm; lastym = ym;
          lastxh = xh; lastyh = yh;
          lastdate = today;
          currentDate = null;
     }

     public void paint(Graphics g) {
          g.setFont(clockFaceFont);
          // Draw the circle and numbers
          g.setColor(handColor);
          g.drawArc(xcenter-50, ycenter-50, 100, 100, 0, 360);
          g.setColor(numberColor);
          g.drawString("9", xcenter-45, ycenter+3);
          g.drawString("3", xcenter+40, ycenter+3);
          g.drawString("12", xcenter-5, ycenter-37);
          g.drawString("6", xcenter-3, ycenter+45);

          // Draw date and hands
          g.setColor(numberColor);
          g.drawString(lastdate, 5, 125);     
          g.drawLine(xcenter, ycenter, lastxs, lastys);
          g.setColor(handColor);
          g.drawLine(xcenter, ycenter-1, lastxm, lastym);
          g.drawLine(xcenter-1, ycenter, lastxm, lastym);
          g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
          g.drawLine(xcenter-1, ycenter, lastxh, lastyh);
     }

     public void start() {
          timer = new Thread(this);
          timer.start();
     }

     public void stop() {
          timer = null;
     }

     public void run() {
          Thread me = Thread.currentThread();
          while (timer == me) {
               try {
                    Thread.currentThread().sleep(100);
               } catch (InterruptedException e) {
               }
               repaint();
          }
     }

     public String getAppletInfo() {
          return "Title: A Clock \n"
               + "Author: Rachel Gollub, 1995 \n"
               + "An analog clock.";
     }

     public String[][] getParameterInfo() {
          String[][] info = {
               {"bgcolor", "hexadecimal RGB number",
                "The background color. Default is the color of your browser."},
               {"fgcolor1", "hexadecimal RGB number",
                "The color of the hands and dial. Default is blue."},
               {"fgcolor2", "hexadecimal RGB number",
                "The color of the second hand and numbers. Default is dark gray."}
          };
          return info;
     }
}

حال زمان مشاهده عملکرد اپلت می رسد .فایل subsun_class_clock را در Package Explorer ایکلیپس انتخاب کنید و آن را اجرا کنید. نتیجه اجرای اپلت را در زیر مشاهده می کنید.

همان گونه که مشاهد می نمایید اپلت در محیط appletviewer اجرا می شود.در صورت که در این محیط وارد منو Applet شویم گزینه های در مقابل روی ما قرار می گیرد.

منو اپلت در Appletviewer

در این منو در صورتی که گزینه Reload را انتخاب کنید . آنگاه اپلت مجددا بار گذاری شده و اجرا می شود . در صورتی که گزینه Stop را انتخاب کنید آنگاه اجرای applet متوقف می شود .در صورتی که گزینه Clone را انتخاب کنیم . مجددا اپلت در پنجره دیگری اجرا می شود. و در صورتی که گزینه Quit را انتخاب کنید. آنگاه از محیط appletviewer خارج می شوید.

دیدگاه ها (0)

ارسال دیدگاه ها

Image CAPTCHA
حروف نمایش داده شده در تصویر را وارد کنید.