SlideShare a Scribd company logo
บทที่ 10
 โปรแกรมจาวาแอปเพล็ต
     (Java Applet)

    อ.ธนิศ า เครือ ไวศยวรรณ
   คณะเทคโนโลยีส ารสนเทศ
สถาบัน เทคโนโลยีพ ระจอมเกล้า เจ้า
       คุณ ทหารลาดกระบัง
วัต ถุป ระสงค์
 แนะนำา การเขีย นโปรแกรมจาวาแอปเพล็ต

 แนะนำา ตัว อย่า งไฟล์
                      HTML ทีม ี tag <APPLET>
                             ่
 เพือ เรีย กใช้โ ปรแกรมจาวา แอปเพล็ต
    ่
 แนะนำา คลาส Applet       และเมธอดทีส ำา คัญ ของคลาส
                                     ่
 แนะนำา คลาส Graphics      และเมธอดสำา คัญ ๆที่
 เกีย วข้อ งกับ คลาส
    ่
 แนะนำา วิธ ีก ารเขีย นโปรแกรมจาวาแอปเพล็ต เพือ
                                               ่
 จัด การกับ ไฟล์ภ าพและไฟล์เ สีย ง
 แนะนำา การเขีย นโปรแกรมจาวาแอปเพล็ต ทีม ส ว น
                                        ่ ี ่
 ติด ต่อ กับ ผู้ใ ช้
โปรแกรมจาวาแอปเพล็ต
 โปรแกรมจาวาแอปเพล็ต   (Applet) คือ โปรแกรม
 ภาษาจาวาทีส ามารถทำา งานภายใต้โ ปรแกรมเว็บ
            ่
 บราวเซอร์ (Web Browser) ทีม ี JVM อยู่
                           ่
 โปรแกรมจาวาแอปเพล็ต จะประกอบด้ว ยไฟล์
 โปรแกรมสองไฟล์ค ือ
  • โปรแกรมภาษาจาวา (.java)
  • โปรแกรมภาษา HTML (.html)

 โปรแกรมจาวาแอปเพล็ต จะแตกต่า งจาก
 โปรแกรมจาวาประยุก ต์ต รงทีไ ม่ม เ มธอดทีช ื่อ
                              ่  ี       ่
 main() และจะไม่ส ามารถทำา งานตามลำา พัง ได้ แต่
 จะต้อ งเรีย กใช้โ ดยผ่า นโปรแกรมภาษา HTML
ตัว อย่า งโปรแกรมจาวาแอปเพล็ต
import java.awt.*;
 import java.awt.*;
import java.applet.*;
 import java.applet.*;

public class HelloWorldApplet extends Applet {
 public class HelloWorldApplet extends Applet {
       public void paint(Graphics g) {
        public void paint(Graphics g) {
            g.drawString("Hello World",20,20);
             g.drawString("Hello World",20,20);
      }}
}}
โปรแกรมภาษา HTML
 โปรแกรมภาษา       HTML จะมี tag ทีช อ
                                      ่ ื่
 <APPLET> เพือ ใช้ใ นการระบุโ ปรแกรมไบท์โ ค้ด
                  ่
 ทีไ ด้ม าจากการคอมไพล์โ ปรแกรมจาวาแอปเพล็ต
   ่
 ซึ่ง ภายใน tag นีจ ะมีค ุณ ลัก ษณะ (attribute)
                    ้
 ต่า งๆคือ ชื่อ ของโปรแกรมไบท์โ ค้ด (.class) และ
 ขนาดของโปรแกรมแอปเพล็ต ทีต ้อ งการจะแสดง
                                  ่
 บนเว็บ เพจ
ตัว อย่า งโปรแกรมภาษา HTML
<HTML>
 <HTML>
    <HEAD>
     <HEAD>
           <TITLE>HelloWorld Example</TITLE>
            <TITLE>HelloWorld Example</TITLE>
    </HEAD>
     </HEAD>
    <BODY>
     <BODY>
           <APPLET CODE="HelloWorldApplet.class"
            <APPLET CODE="HelloWorldApplet.class"
                   WIDTH="300" HEIGHT="300">
                    WIDTH="300" HEIGHT="300">
          </APPLET>
           </APPLET>
    </BODY>
     </BODY>
</HTML>
 </HTML>
ขั้น ตอนการพัฒ นาโปรแกรมจาวา
            แอปเพล็ต
 เขีย นโปรแกรมซอร์ด โค้ด
                       (HelloWorldApplet.java)
 และโปรแกรม เว็บ เพจ (HelloWorld.html) โดยใช้
 โปรแกรมอิด เ ตอร์ใ ดๆ
            ี
 คอมไพล์โ ปรแกรม HelloWorldApplet.java        โดยใช้
 คอมไพเลอร์ด ง นี้
             ั
         javac HelloWorldApplet.java

 ตัว อย่า งนีจ ะได้โ ปรแกรมไบท์โ ค้ด ที่ช อ
             ้                            ื่
 HelloWorldApplet.class
 ใช้โ ปรแกรมเว็บ บราวเซอร์ใ ดๆเช่น    Internet
 Explorer หรือ Netscape เปิด โปรแกรมเว็บ เพจที่
 ชื่อ HelloWorld.html ซึ่ง จะเรีย กโปรแกรมไบท์โ ค้ด
 ทีช ื่อ HelloWorldApplet.class โดยอัต โนมัต ิ
   ่
ตัว อย่า งการรัน โปรแกรมบนเว็บ
            บราวเซอร์
ขั้น ตอนการทำา งาน
 การรัน โปรแกรมจาวาแอปเพล็ต ภายในโปรแกรม
 เว็บ บราวเซอร์ จะมีข ั้น ตอนการทำา งานดัง นี้
  • โปรแกรมเว็บ บราวเซอร์จ ะโหลด    URL ตามตำา แหน่ง ที่
    ระบุ
  • โปรแกรมเว็บ บราวเซอร์จ ะโหลดไฟล์ HTML ที่ร ะบุแ ละ
    กระทำา คำา สั่ง tag ต่า งๆที่ร ะบุใ นไฟล์ HTML
  • โปรแกรมเว็บ บราวเซอร์จ ะโหลดโปรแกรมโปรแก
    รมไบท์โ ค้ด ที่เ ป็น โปรแกรม จาวาแอปเพล็ต ที่ร ะบุใ น
    tag ที่ช ื่อ APPLET ตาม URL ที่ร ะบุ
  • โปรแกรมเว็บ บราวเซอร์จ ะรัน โปรแกรมจาวาแอปเพล็ต
รูป แสดงขั้น ตอนการทำา งาน
ความปลอดภัย ในการใช้โ ปรแกรม
       จาวาแอปเพล็ต
 โปรแกรมเว็บ บราวเซอร์ท ร ัน โปรแกรมจาวาแอป
                         ี่
 เพล็ต จะต้อ งมี JVM อยูแ ละเนือ งจากโปรแกรมเว็บ
                        ่      ่
 บราวเซอร์ส ามารถโหลดโปรแกรมจาวาแอปเพล็ต
 มาจากเครื่อ งคอมพิว เตอร์แ ม่ข ่า ยอื่น ๆได้ ดัง นัน
                                                    ้
 ภาษาจาวาจึง ได้ก ำา หนดระบบความปลอดภัย ใน
 การรัน โปรแกรมจาวาแอปเพล็ต เพือ ป้อ งกัน ไม่ใ ห้
                                       ่
 โปรแกรมจาวาแอปเพล็ต ทำา งานต่า งๆดัง นี้
  • อ่า นหรือ เขีย นไฟล์อ ื่น ๆที่อ ยู่ใ นเครื่อ งที่ร ัน โปรแกรมอยู่
  • เรีย กใช้โ ปรแกรมอื่น ๆที่อ ยู่ใ นเครื่อ งที่ร ัน โปรแกรมอยู่
  • ติด ต่อ กับ เครื่อ งแม่ข ่า ยอื่น
  • เรีย กใช้ native method (คำา สั่ง เรีย กเมธอดใน
   โปรแกรมภาษาอื่น )
 กรณีท โ ปรแกรมภาษาจาวาแอปเพล็ต พยายาม
        ี่
Tag ที่ช ื่อ <APPLET>
 Tag   ทีช ื่อ APPLET มีร ูป แบบดัง นี้
          ่
 <APPLET code = filename.class      width = widthPixels
 height = heigthPixels      [archive = archivefile]
 [codeapplet = url] [vspace = vMargin]
 [hspace = hMargin] [align = alignment]
 [alt = text]>
 [<PARAM name = attrl     value = val1>
 <PARAM name = attrN     value = valN>]
 </APPLET>
Tag ที่ช ื่อ <APPLET>
    ทีช ื่อ <APPLET> จะมีค ุณ ลัก ษณะที่ต อ งระบุ
 tag ่                                   ้
 สามอย่า งคือ
   • code   เพื่อ ระบุช ื่อ โปรแกรมไบท์โ ค้ด ของโปรแกรมจา
     วาแอปเพล็ต
   • width เพื่อ ระบุค วามกว้า งของโปรแกรมแอปเพล็ต ที่
     ต้อ งแสดงบนเว็บ เพจ
   • height เพื่อ ระบุค วามสูง ของโปรแกรมแอปเพล็ต ที่
     ต้อ งการแสดงบนเว็บ เพจ
 นอกจากนีย ัง มีค ุณ ลัก ษณะอื่น ๆทีเ ป็น เงื่อ นไขเพิม
          ้                          ่                 ่
 เติม ดัง นี้
   • ALIGN   เพื่อ กำา หนดการวางตำา แหน่ง ของโปรแกรมจา
     วาแอปเพล็ต
   • CODEBASE เพื่อ ระบุต ำา แหน่ง ของ URL ที่เ ก็บ โปรแก
     รมไบท์โ ค้ด ของโปรแกรมจาวาแอปเพล็ต
การส่ง พารามิเ ตอร์
 คุณ ลัก ษณะทีช ื่อ PARAM
               ่         จะใช้ใ นการส่ง ผ่า น
  พารามิเ ตอร์ไ ปยัง โปรแกรม จาวาแอปเพล็ต ได้
 รูป แบบของคุณ ลัก ษณะทีช ื่อ PARAM
                         ่
     <PARAM name = attr1   VALUE = val1>

 ตัว อย่า ง
     <PARAM name = speed   VALUE = "25">
 โปรแกรมจาวาแอปเพล็ต สามารถเรีย กดูค ่า
  พารามิเ ตอร์ ทีจ ะส่ง ผ่า นมาจากโปรแกรม .html
                  ่
  โดยใช้ค ุณ ลัก ษณะใน tag ทีช ื่อ APPLET นีไ ด้ โดย
                                 ่          ้
  ใช้เ มธอดทีช ื่อ getParameter()
             ่
การส่ง พารามิเ ตอร์
 รูป แบบของ เมธอด getParameter()
     String getParameter(String paramName)

 เมธอดนี้จ ะส่ง ค่า เป็น ชนิด ข้อ มูล แบบ String คืน มา
  โดยจะเป็น ค่า ทีอ ยูใ น <PARAM> ทีช ื่อ VALUE ค่า ทีส ่ง
                   ่ ่                  ่             ่
  กลับ มาจะเป็น case-sensitive แต่ช ื่อ พารามิเ ตอร์
  จะไม่ใ ช่ case-sensitive
 ตัว อย่า ง
     getParameter(“SPEED”)
   จะให้ค ่า กลับ มาเป็น “25” ตามที่ร ะบุไ ว้ใ นตัว อย่า งของ
    <PARAM> ข้า งต้น
 กรณีท ไ ม่พ บพารามิเ ตอร์ต ามชื่อ ทีส ่ง ไปใน
        ี่                            ่
  getParameter()เราจะได้ค ่า ทีก ลับ มาเป็น null
                               ่
คลาส      Applet

        เป็น คลาสทีก ำา หนดไว้ใ น Java API ทีอ ยู่
    Applet          ่                         ่
    ในแพคเก็จ java.applet
 โปรแกรมจาวาแอปเพล็ต ทุก โปรแกรมจะต้อ ง
    สืบ ทอดมาจากคลาส     Applet   โดยใช้ค ำา สั่ง   extends
    Applet
 คลาส Applet     จัด เป็น คลาสประเภท Container ที่
    สืบ ทอดมาจากคลาสทีช ื่อ Panel โดยมีก ารจัด วาง
                            ่
    ผัง เป็น แบบ FlowLayout
 คลาส Appletจึง สามารถทีจ ะใส่อ อปเจ็ค ทีเ ป็น ส่ว น
                         ่                ่
    ประกอบกราฟฟิก ของแพคเก็จ AWT ได้
 ในกรณีท ต ้อ งการใช้ส ่ว นประกอบกราฟฟิก ของ
          ี่
เมธอดที่ส ำา คัญ ของคลาส                  Applet

 โปรแกรมจาวาแอปเพล็ต จะไม่ม เ มธอดทีช อ main()
                             ี       ่ ื่
 เมธอดที่ส ำา คัญ ของคลาส Applet   มีด ัง นี้
  •   init()
  •   start()
  •   stop()
  •   destroy()
  •   paint()
รายละเอีย ดของเมธอด
   init()
     • เมธอดนี้จ ะถูก เรีย กเพีย งครั้ง เดีย วเมื่อ มีก ารโหลด
      โปรแกรมจาวาแอปเพล็ต หรือ เมื่อ มีก ารรีโ หลด
      (reload) โปรแกรมเว็บ บราวเซอร์
   start()
     • เมธอดนี้จ ะถูก เรีย กหลัง จากทำา คำา สั่ง ในเมธอดที่ช ื่อ
      init() และถูก เรีย กใช้ท ุก ครั้ง ที่ผ ู้ใ ช้ก ลับ มายัง เว็บ เพจที่
      มีโ ปรแกรมจาวาแอปเพล็ต หน้า นี้อ ยู่ หรือ ทุก ครั้ง ที่ม ีก าร
      แสดงเฟรมที่ม ีโ ปรแกรมจาวาแอปเพล็ต หน้า นี้อ ยู่
   stop()
     • เมธอดนี้จ ะถูก เรีย กใช้เ มื่อ ผู้ใ ช้ย ้า ยไปยัง เว็บ เพจหน้า
      อื่น หรือ เมื่อ มีก ารยกเลิก การแสดงเฟรมที่ม ีโ ปรแกรมจา
      วาแอปเพล็ต หน้า นี้อ ยู่
   destroy()
     • เมธอดนี้จ ะถูก เรีย กครั้ง เดีย วเมื่อ มีก ารปิด เว็บ บราวเซอร์
เมธอด        paint()

 เป็น เมธอดทีม ค ำา สัง ทีเ กีย วข้อ งกับ การวาดรูป
              ่ ี      ่ ่ ่
 กราฟฟิก ต่า งๆ
 เมธอด paint()   มีร ูป แบบดัง นี้
     public void paint(Graphics g) {
         [statements]
     }
 คำา สั่ง ในเมธอด paint()
                         จะถูก เรีย กใช้ง านหลัง จาก
 การทำา คำา สัง ในเมธอด start() ทำา ให้ส ามารถทีจ ะ
              ่                                  ่
 เขีย นรูป ทรงหรือ ข้อ ความทีเ ป็น กราฟฟิก ได้
                             ่
 เมธอด paint()จะถูก เรีย กซำ้า ทุก ครั้ง ทีเ ว็บ
                                            ่
 บราวเซอร์ม ก ารเปลี่ย นแปลงเช่น การปรับ ขนาด
            ี
ขั้น ตอนการทำา งานของเมธอด
คลาส       Graphics

 การสร้า งภาพกราฟฟิก ในโปรแกรมจาวาแอปเพล็
 ตจะทำา ได้โ ดยการ override เมธอด paint()แล้ว
 เขีย นคำา สั่ง ในการวาดรูป ทรงกราฟฟิก ต่า งๆใน
 เมธอด
 เมธอดในการวาดรูป ทรงต่า งๆ
  •   drawLine()
  •   drawRect(), fillRect()
  •   drawRoundRect(), fillRoundRect()
  •   drawOval(), fillOval()
  •   drawArc(), fillArc()
  •   drawPolygon(), fillPolygon()
  •   drawPolyline()
  •   drawString()

 เมธอดทีใ ช้ใ นการจัด การคุณ ลัก ษณะของ
         ่
 กราฟฟิก
ตัว อย่า งโปรแกรม
import java.awt.*;
 import java.awt.*;
import java.applet.*;
 import java.applet.*;

public class GUIApplet extends Applet {
 public class GUIApplet extends Applet {
   public void paint(Graphics g) {
    public void paint(Graphics g) {
          g.drawRect(5,5,15,15);
           g.drawRect(5,5,15,15);
          g.fillOval(50,50,20,20);
           g.fillOval(50,50,20,20);
          g.drawArc(75,25,40,40,0,135);
           g.drawArc(75,25,40,40,0,135);
          g.fillArc(80,80,30,30,90,270);
           g.fillArc(80,80,30,30,90,270);
          g.drawString("Hello",5,90);
           g.drawString("Hello",5,90);
     }}
}}


ผลลัพ ธ์ท ไ ด้จ ากการรัน โปรแกรม
          ี่
โปรแกรม         AWTThread

 โปรแกรม       GUI จะมีโ ปรแกรมแบบเธรดทีเ รีย กว่า
                                            ่
 AWTThread ทีเ ป็น โปรแกรมทีป ระมวลผลพร้อ มกัน
                ่             ่
 ซึ่ง จะทำา หน้า ทีค อยตรวจสอบว่า จะต้อ งมีก ารเรีย ก
                    ่
 ใช้เ มธอด paint() เพือ วาดรูป ทรงกราฟฟิก ตามคำา
                        ่
 สั่ง ทีร ะบุใ ห้แ สดงบนออปเจ็ค ประเภท Container
        ่
 (เช่น Applet) ใหม่ห รือ ไม่
 โปรแกรม AWTThread  จะเรีย กใช้เ มธอด    paint()   ใหม่
 ในกรณีต ่า งๆอาทิเ ช่น
  • เมื่อ มีก ารโหลดออปเจ็ค ของคลาสประเภท Container
    เพื่อ แสดงผลครั้ง แรก
  • เมื่อ โปรแกรมเปลี่ย นจากไอคอนกลับ มาเป็น โปรแกรมที่
    แสดงผลตามหน้า จอปกติ
  • เมื่อ โปรแกรมเว็บ บราวเซอร์ กลับ มาแสดงเว็บ เพจ
เมธอด      repaint()

 โปรแกรม AWTThread   จะเรีย กใช้เ มธอด repaint()
 เมือ ต้อ งการวาดรูป ทรงกราฟฟิก ใหม่ ซึง เมธอด
    ่                                     ่
 repaint() จะเรีย กใช้เ มธอด update() อีก ต่อ หนึง
                                                 ่
 โดยทัว ไปเมธอด update()
       ่                   จะมีค ำา สั่ง ในการลบภาพ
 กราฟฟิก เดิม และเรีย กใช้เ มธอดทีช ื่อ paint() โดย
                                    ่
 มีร ูป แบบดัง นี้
    public void update(Graphics g) {
         g.clearRect(0,0,width,height);
         paint(g);
    }
เมธอด       update()

 เราสามารถทีจ ะ
             ่         override เมธอดทีช ื่อ update()
                                       ่
 ใหม่เ พื่อ ไม่ใ ห้ม ก ารลบภาพกราฟฟิก เดิม ได้โ ดย
                     ี
 กำา หนดรูป แบบคำา สั่ง ดัง นี้
    public void update(Graphics g){
         paint(g);
    }
การเรีย กใช้เ มธอดต่า งๆของ
    โปรแกรม AWTThread
คำา สัง ด้า น Multimedia
               ่
 โปรแกรมจาวาแอปเพล็ต สามารถทีจ ะแสดง
                              ่
 รูป ภาพทีอ ยูฟ อร์แ มตต่า งๆเช่น GIF หรือ JPEG ได้
           ่ ่
 และสามารถทีจ ะเล่น ไฟล์เ สีย งได้โ ดยมีค ลาสที่
                ่
 สำา คัญ สองคลาสคือ
  • คลาส Image    ซึ่ง เป็น คลาสที่ใ ช้ใ นการสร้า งออปเจ็ค เพื่อ
    จัด การกับ ไฟล์ร ูป ภาพ
  • คลาส AudioClip ซึ่ง เป็น คลาสที่ใ ช้ใ นการสร้า งออปเจ็ค
    เพื่อ จัด การกับ ไฟล์เ สีย ง
คลาส       Image

 โปรแกรมจาวาแอปเพล็ต สามารถสร้า งออปเจ็ค
    ของคลาส Image ได้โ ดยเรีย กใช้เ มธอด getImage()
    ทีอ ยูใ นคลาสทีช อ Applet ซึ่ง มีร ูป แบบดัง นี้
      ่ ่          ่ ื่
     •   Image getImage(URL u)
     •   Image getImage(URL u,String name)
   URL เป็น คลาสทีใ ช้ส ร้า งออปเจ็ค เพือ ระบุต ำา แหน่ง
                   ่                     ่
    URL ของรูป ภาพอาทิเ ช่น
     •   URL u = new URL(“http://java.sun.com”);

 กรณีท ต ำา แหน่ง ของไฟล์ร ูป ภาพอยูใ น
        ี่                           ่       URL เดีย ว
    กับ ตำา แหน่ง ของโปรแกรมเว็บ เพจ เราสามารถ
    เรีย กใช้เ มธอดทีช ื่อ getDocumentBase()เพือ ระบุ URL
                       ่                       ่
    ดัง กล่า ว อาทิเ ช่น
     •   Image cat = getImage(getDocumentBase(),“cat.gif”);
คลาส       Image

 ส่ว นในกรณีท ต ำา แหน่ง ของไฟล์ร ูป ภาพมี
               ี่                              URL
    ตรงกับ ตำา แหน่ง ของโปรแกรมไบท์โ ค้ด ของ
    โปรแกรมจาวาแอปเพล็ต เราสามารถเรีย กใช้
    เมธอดทีช ื่อ getCodeBase() เพือ ระบุ URL ดัง กล่า ว
             ่                    ่
    อาทิเ ช่น
     •   Image cat = getImage(getCodeBase(),“cat.gif”);

 เมธอด drawImage()ในคลาส Graphics              ใช้ใ นการ
    แสดงรูป ภาพที่ต ำา แหน่ง x, y ดัง นี้
     •   drawImage(Image im,int x,int y,ImageObserver ob);
               เป็น อิน เตอร์เ ฟสทีใ ช้ร ะบุเ มือ มีก าร
    ImageObserver                   ่            ่
    เปลี่ย นสถานะของรูป ภาพ
ตัว อย่า งโปรแกรม
import java.awt.*;
 import java.awt.*;
import java.applet.*;
 import java.applet.*;

public class ImageDemo extends Applet{
 public class ImageDemo extends Applet{
   Image im;
    Image im;
     public void init() {
      public void init() {
     im = getImage(getDocumentBase(), "duke.gif");
      im = getImage(getDocumentBase(), "duke.gif");
     }}
     public void paint(Graphics g){
      public void paint(Graphics g){
     g.drawImage(im, 20, 20, this);
      g.drawImage(im, 20, 20, this);
     }}
}}
คลาส      AudioClip

 โปรแกรมจาวาแอปเพล็ต สามารถสร้า งออปเจ็ค
 ของคลาส               AudioClip          ได้โ ดยใช้เ มธอด
 getAudioClip()ซึ่ง มีร ูป แบบดัง นี้
  •   AudioClip getAudioClip(URL u)
  •   AudioClip getAudioClip(URL u,String name)

 คลาส AudioClip     มีเ มธอดทีเ กี่ย วข้อ งกับ การเล่น
                               ่
 เสีย งดัง นี้
  •   play()
  •   loop()
  •   stop()

 นอกจากนีค ลาส Applet
          ้              ยัง มีเ มธอด play() ที่
 สนับ สนุน การเล่น ไฟล์เ สีย ง โดยไม่จ ำา เป็น ต้อ ง
 สร้า งออปเจ็ค ของคลาส AudioClip โดยมีร ูป แบบ
 ดัง นี้
ตัว อย่า งโปรแกรม
import java.awt.*;
 import java.awt.*;
import java.applet.*;
 import java.applet.*;

public class MusicDemo extends Applet {{
 public class MusicDemo extends Applet
   AudioClip sound;
    AudioClip sound;
     public void init() {{
      public void init()
     sound == getAudioClip(getDocumentBase(),
      sound    getAudioClip(getDocumentBase(),   "spacemusic.au");
                                                  "spacemusic.au");
     }}
     public void paint(Graphics g){
      public void paint(Graphics g){
     sound.loop();
      sound.loop();
     }}
     public void stop() {{
      public void stop()
     sound.stop();
      sound.stop();
     }}
}}
โปรแกรมจาวาแอปเพล็ต ที่โ ต้ต อบ
          กับ ผู้ใ ช้
 คลาส Appletเป็น คลาสประเภท Container และ
 สามารถทีจ ะรับ ฟัง เหตุก ารณ์ท างกราฟฟิก ต่า งๆได้
           ่
 อาทิเ ช่น
  •   ActionListener
  •   MouseListener
  •   MouseMotionListener
  •   KeyListListener
  •   FocusListener
ตัว อย่า งโปรแกรมจาวาแอปเพล็ต ที่
          มีส ่ว นติด ต่อ กับ ผู้ใ ช้
  import java.awt.*;
   import java.awt.*;
  import java.awt.event.*;
   import java.awt.event.*;
  import java.applet.*;
   import java.applet.*;

  public class MusicGUI extends Applet implements
   public class MusicGUI extends Applet implements
                                          ActionListener {
                                           ActionListener {

    AudioClip sound;
     AudioClip sound;
    Button bn1, bn2; public void init() {
     Button bn1, bn2; public void init() {
        sound = getAudioClip(getDocumentBase(),
         sound = getAudioClip(getDocumentBase(),
                                 "spacemusic.au");
                                  "spacemusic.au");
        bn1 = new Button("PLAY");
         bn1 = new Button("PLAY");
        bn2 = new Button("STOP");
         bn2 = new Button("STOP");
        add(bn1);
         add(bn1);
        add(bn2);
         add(bn2);
ตัว อย่า งโปรแกรมจาวาแอปเพล็ต ที่
          มีส ่ว นติด ต่อ กับ ผู้ใ ช้
        bn1.addActionListener(this);
         bn1.addActionListener(this);
        bn2.addActionListener(this);
         bn2.addActionListener(this);
        bn1.setEnabled(true);
         bn1.setEnabled(true);
        bn2.setEnabled(false);
         bn2.setEnabled(false);
   }}

   public void stop() {
    public void stop() {
       sound.stop();
        sound.stop();
   }}

   public void actionPerformed(ActionEvent ev) {
    public void actionPerformed(ActionEvent ev) {
       String cmd = ev.getActionCommand();
        String cmd = ev.getActionCommand();
ตัว อย่า งโปรแกรมจาวาแอปเพล็ต ที่
          มีส ่ว นติด ต่อ กับ ผู้ใ ช้
           if (cmd.equals("PLAY")) {
            if (cmd.equals("PLAY")) {
                  sound.loop();
                   sound.loop();
                 bn2.setEnabled(true);
                  bn2.setEnabled(true);
                 bn1.setEnabled(false);
                  bn1.setEnabled(false);
           } else if (cmd.equals("STOP")) {
            } else if (cmd.equals("STOP")) {
                  sound.stop();
                   sound.stop();
                 bn2.setEnabled(false);
                  bn2.setEnabled(false);
                 bn1.setEnabled(true);
                  bn1.setEnabled(true);
           }}
      }}
 }}
สรุป เนื้อ หาของบท
 โปรแกรมจาวาแอปเพล็ต สามารถรัน ภายใต้เ ว็บ
  บราวเซอร์ไ ด้ โดยจะต้อ งระบุช ื่อ โปรแกรมไว้
  ภายใน tag <APPLET> ในไฟล์ HTML
 โปรแกรมจาวาแอปเพล็ต ทุก โปรแกรมจะต้อ ง
  สืบ ทอดมาจากคลาส Applet โดยใช้ค ำา สัง extends
                                           ่
  Applet และจะเริ่ม ต้น ทำา งานทีเ มธอด init()
                                 ่
 คลาส Applet มีเ มธอดทีส ำา คัญ คือ เมธอด
                           ่
  init(),start(),stop(), destroy() และ paint()
 เมธอดของคลาส Graphics     สามารถนำา ไปใช้ใ นการ
 วาดรูป กราฟฟิก ต่า งๆได้ เช่น
 drawLine(),drawPolyline(),drawRect() และ fillRect()
 เป็น ต้น
สรุป เนื้อ หาของบท
 เมธอดทีร ับ
         ่  argument เข้า มาเป็น ออปเจ็ค ของ
 คลาส Graphics คือ เมธอด paint() และ update()
 คลาส Image    เป็น คลาสทีเ ก็บ ออปเจ็ค ของไฟล์
                           ่
 รูป ภาพ
 คลาส AudioClip   เป็น คลาสทีเ ก็บ ออปเจ็ค ของไฟล์
                              ่
 เสีย ง
 Applet  สามารถทีจ ะรับ ฟัง เหตุก ารณ์ต่า งๆได้ เช่น
                    ่
 ActionListener, MouseListener และ KeyListListener
 เป็น ต้น
แบบฝึก หัด
 ข้อ ที่   1
    • ทดลองเขีย นโปรแกรมจาวา     แอปเพล็ต เพื่อ เป็น บอร์ด
     สำา หรับ การวาดรูป แบบ free hand

 ข้อ ที่   2
    • ทดลองปรับ ปรุง
                   GUI ของโปรแกรมจำา ลองระบบ
     ธนาคารให้ส ามารถเรีย กใช้ง านผ่า น Web Browser
     ได้

More Related Content

What's hot (18)

Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุต
Thanachart Numnonda
 
Java Programming [12/12] : Thread
Java Programming [12/12] : Thread
IMC Institute
 
Java Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุม
Thanachart Numnonda
 
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
KEk YourJust'one
 
รายงาน คอม
รายงาน คอม
NooLuck
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
IMC Institute
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
Saranporn Rungrueang
 
องค์ประกอบของวิชวลเบสิก
องค์ประกอบของวิชวลเบสิก
pisan kiatudomsak
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่น
Thanachart Numnonda
 
Java Programming: การจัดการกับข้อผิดพลาด
Java Programming: การจัดการกับข้อผิดพลาด
Thanachart Numnonda
 
ส่วนประกอบวิชวลเบสิก
ส่วนประกอบวิชวลเบสิก
Nuunamnoy Singkham
 
PHP Tutorial (introduction)
PHP Tutorial (introduction)
Tinnakorn Puttha
 
Vb6 3 ActiveX Control พื้นฐาน
Vb6 3 ActiveX Control พื้นฐาน
ณัฐพล บัวพันธ์
 
Java Programming [9/12]: Exception Handling
Java Programming [9/12]: Exception Handling
IMC Institute
 
รายงาน window
รายงาน window
NooLuck
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุต
Thanachart Numnonda
 
Java Programming [12/12] : Thread
Java Programming [12/12] : Thread
IMC Institute
 
Java Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุม
Thanachart Numnonda
 
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
KEk YourJust'one
 
รายงาน คอม
รายงาน คอม
NooLuck
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
IMC Institute
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
Saranporn Rungrueang
 
องค์ประกอบของวิชวลเบสิก
องค์ประกอบของวิชวลเบสิก
pisan kiatudomsak
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่น
Thanachart Numnonda
 
Java Programming: การจัดการกับข้อผิดพลาด
Java Programming: การจัดการกับข้อผิดพลาด
Thanachart Numnonda
 
ส่วนประกอบวิชวลเบสิก
ส่วนประกอบวิชวลเบสิก
Nuunamnoy Singkham
 
PHP Tutorial (introduction)
PHP Tutorial (introduction)
Tinnakorn Puttha
 
Java Programming [9/12]: Exception Handling
Java Programming [9/12]: Exception Handling
IMC Institute
 
รายงาน window
รายงาน window
NooLuck
 

Similar to Java Programming [10/12]: Java Applet (20)

Lab Computer Programming 1
Lab Computer Programming 1
Saranyu Srisrontong
 
662327 08-2-53 [โหมดความเข้ากันได้]
662327 08-2-53 [โหมดความเข้ากันได้]
Deity Toon
 
Computer Programming 1
Computer Programming 1
Saranyu Srisrontong
 
พื้นฐานการสร้าง Java
พื้นฐานการสร้าง Java
Janë Janejira
 
โปรแกรม Net beans
โปรแกรม Net beans
BoOm mm
 
บทที่ 3 พื้นฐานภาษา Java
บทที่ 3 พื้นฐานภาษา Java
Itslvle Parin
 
บทที่ 3 พื้นฐานภาษา Java
บทที่ 3 พื้นฐานภาษา Java
Itslvle Parin
 
พื้นฐานโปรแกรมภาษาจาวา
พื้นฐานโปรแกรมภาษาจาวา
Thanachart Numnonda
 
การเขียนโปรแกรมโดยใช้ Netbeans
การเขียนโปรแกรมโดยใช้ Netbeans
Wasin Kunnaphan
 
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
IMC Institute
 
Java Web programming Using NetBeans
Java Web programming Using NetBeans
Software Park Thailand
 
Java-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindow
Wongyos Keardsri
 
Introduction to Java Programming
Introduction to Java Programming
Bhusit Net
 
การเขียนโปรแกรมด้วย Net beans
การเขียนโปรแกรมด้วย Net beans
Apisit Song
 
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Thanachart Numnonda
 
ภาษาจาวา 1
ภาษาจาวา 1
khwanchanokPhraeampha
 
ใบความรู้ที่ 4 การเขียนโปรแกรมด้วย visual basic 2010
ใบความรู้ที่ 4 การเขียนโปรแกรมด้วย visual basic 2010
Nattapon
 
Java-Chapter 08 Methods
Java-Chapter 08 Methods
Wongyos Keardsri
 
662327 08-2-53 [โหมดความเข้ากันได้]
662327 08-2-53 [โหมดความเข้ากันได้]
Deity Toon
 
พื้นฐานการสร้าง Java
พื้นฐานการสร้าง Java
Janë Janejira
 
โปรแกรม Net beans
โปรแกรม Net beans
BoOm mm
 
บทที่ 3 พื้นฐานภาษา Java
บทที่ 3 พื้นฐานภาษา Java
Itslvle Parin
 
บทที่ 3 พื้นฐานภาษา Java
บทที่ 3 พื้นฐานภาษา Java
Itslvle Parin
 
พื้นฐานโปรแกรมภาษาจาวา
พื้นฐานโปรแกรมภาษาจาวา
Thanachart Numnonda
 
การเขียนโปรแกรมโดยใช้ Netbeans
การเขียนโปรแกรมโดยใช้ Netbeans
Wasin Kunnaphan
 
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
IMC Institute
 
Java-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindow
Wongyos Keardsri
 
Introduction to Java Programming
Introduction to Java Programming
Bhusit Net
 
การเขียนโปรแกรมด้วย Net beans
การเขียนโปรแกรมด้วย Net beans
Apisit Song
 
Java Web Programming Using NetBeans 6.5
Java Web Programming Using NetBeans 6.5
Thanachart Numnonda
 
ใบความรู้ที่ 4 การเขียนโปรแกรมด้วย visual basic 2010
ใบความรู้ที่ 4 การเขียนโปรแกรมด้วย visual basic 2010
Nattapon
 
Ad

More from IMC Institute (20)

นิตยสาร Digital Trends ฉบับที่ 14
นิตยสาร Digital Trends ฉบับที่ 14
IMC Institute
 
Digital trends Vol 4 No. 13 Sep-Dec 2019
Digital trends Vol 4 No. 13 Sep-Dec 2019
IMC Institute
 
บทความ The evolution of AI
บทความ The evolution of AI
IMC Institute
 
IT Trends eMagazine Vol 4. No.12
IT Trends eMagazine Vol 4. No.12
IMC Institute
 
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
IMC Institute
 
IT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to Work
IMC Institute
 
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
IMC Institute
 
IT Trends eMagazine Vol 4. No.11
IT Trends eMagazine Vol 4. No.11
IMC Institute
 
แนวทางการทำ Digital transformation
แนวทางการทำ Digital transformation
IMC Institute
 
บทความ The New Silicon Valley
บทความ The New Silicon Valley
IMC Institute
 
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
IMC Institute
 
แนวทางการทำ Digital transformation
แนวทางการทำ Digital transformation
IMC Institute
 
The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)
IMC Institute
 
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
IMC Institute
 
IT Trends eMagazine Vol 3. No.9
IT Trends eMagazine Vol 3. No.9
IMC Institute
 
Thailand software & software market survey 2016
Thailand software & software market survey 2016
IMC Institute
 
Developing Business Blockchain Applications on Hyperledger
Developing Business Blockchain Applications on Hyperledger
IMC Institute
 
Digital transformation @thanachart.org
Digital transformation @thanachart.org
IMC Institute
 
บทความ Big Data จากบล็อก thanachart.org
บทความ Big Data จากบล็อก thanachart.org
IMC Institute
 
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
IMC Institute
 
นิตยสาร Digital Trends ฉบับที่ 14
นิตยสาร Digital Trends ฉบับที่ 14
IMC Institute
 
Digital trends Vol 4 No. 13 Sep-Dec 2019
Digital trends Vol 4 No. 13 Sep-Dec 2019
IMC Institute
 
บทความ The evolution of AI
บทความ The evolution of AI
IMC Institute
 
IT Trends eMagazine Vol 4. No.12
IT Trends eMagazine Vol 4. No.12
IMC Institute
 
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
เพราะเหตุใด Digitization ไม่ตอบโจทย์ Digital Transformation
IMC Institute
 
IT Trends 2019: Putting Digital Transformation to Work
IT Trends 2019: Putting Digital Transformation to Work
IMC Institute
 
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
มูลค่าตลาดดิจิทัลไทย 3 อุตสาหกรรม
IMC Institute
 
IT Trends eMagazine Vol 4. No.11
IT Trends eMagazine Vol 4. No.11
IMC Institute
 
แนวทางการทำ Digital transformation
แนวทางการทำ Digital transformation
IMC Institute
 
บทความ The New Silicon Valley
บทความ The New Silicon Valley
IMC Institute
 
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
นิตยสาร IT Trends ของ IMC Institute ฉบับที่ 10
IMC Institute
 
แนวทางการทำ Digital transformation
แนวทางการทำ Digital transformation
IMC Institute
 
The Power of Big Data for a new economy (Sample)
The Power of Big Data for a new economy (Sample)
IMC Institute
 
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
บทความ Robotics แนวโน้มใหม่สู่บริการเฉพาะทาง
IMC Institute
 
IT Trends eMagazine Vol 3. No.9
IT Trends eMagazine Vol 3. No.9
IMC Institute
 
Thailand software & software market survey 2016
Thailand software & software market survey 2016
IMC Institute
 
Developing Business Blockchain Applications on Hyperledger
Developing Business Blockchain Applications on Hyperledger
IMC Institute
 
Digital transformation @thanachart.org
Digital transformation @thanachart.org
IMC Institute
 
บทความ Big Data จากบล็อก thanachart.org
บทความ Big Data จากบล็อก thanachart.org
IMC Institute
 
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
กลยุทธ์ 5 ด้านกับการทำ Digital Transformation
IMC Institute
 
Ad

Java Programming [10/12]: Java Applet

  • 1. บทที่ 10 โปรแกรมจาวาแอปเพล็ต (Java Applet) อ.ธนิศ า เครือ ไวศยวรรณ คณะเทคโนโลยีส ารสนเทศ สถาบัน เทคโนโลยีพ ระจอมเกล้า เจ้า คุณ ทหารลาดกระบัง
  • 2. วัต ถุป ระสงค์  แนะนำา การเขีย นโปรแกรมจาวาแอปเพล็ต  แนะนำา ตัว อย่า งไฟล์ HTML ทีม ี tag <APPLET> ่ เพือ เรีย กใช้โ ปรแกรมจาวา แอปเพล็ต ่  แนะนำา คลาส Applet และเมธอดทีส ำา คัญ ของคลาส ่  แนะนำา คลาส Graphics และเมธอดสำา คัญ ๆที่ เกีย วข้อ งกับ คลาส ่  แนะนำา วิธ ีก ารเขีย นโปรแกรมจาวาแอปเพล็ต เพือ ่ จัด การกับ ไฟล์ภ าพและไฟล์เ สีย ง  แนะนำา การเขีย นโปรแกรมจาวาแอปเพล็ต ทีม ส ว น ่ ี ่ ติด ต่อ กับ ผู้ใ ช้
  • 3. โปรแกรมจาวาแอปเพล็ต  โปรแกรมจาวาแอปเพล็ต (Applet) คือ โปรแกรม ภาษาจาวาทีส ามารถทำา งานภายใต้โ ปรแกรมเว็บ ่ บราวเซอร์ (Web Browser) ทีม ี JVM อยู่ ่  โปรแกรมจาวาแอปเพล็ต จะประกอบด้ว ยไฟล์ โปรแกรมสองไฟล์ค ือ • โปรแกรมภาษาจาวา (.java) • โปรแกรมภาษา HTML (.html)  โปรแกรมจาวาแอปเพล็ต จะแตกต่า งจาก โปรแกรมจาวาประยุก ต์ต รงทีไ ม่ม เ มธอดทีช ื่อ ่ ี ่ main() และจะไม่ส ามารถทำา งานตามลำา พัง ได้ แต่ จะต้อ งเรีย กใช้โ ดยผ่า นโปรแกรมภาษา HTML
  • 4. ตัว อย่า งโปรแกรมจาวาแอปเพล็ต import java.awt.*; import java.awt.*; import java.applet.*; import java.applet.*; public class HelloWorldApplet extends Applet { public class HelloWorldApplet extends Applet { public void paint(Graphics g) { public void paint(Graphics g) { g.drawString("Hello World",20,20); g.drawString("Hello World",20,20); }} }}
  • 5. โปรแกรมภาษา HTML  โปรแกรมภาษา HTML จะมี tag ทีช อ ่ ื่ <APPLET> เพือ ใช้ใ นการระบุโ ปรแกรมไบท์โ ค้ด ่ ทีไ ด้ม าจากการคอมไพล์โ ปรแกรมจาวาแอปเพล็ต ่ ซึ่ง ภายใน tag นีจ ะมีค ุณ ลัก ษณะ (attribute) ้ ต่า งๆคือ ชื่อ ของโปรแกรมไบท์โ ค้ด (.class) และ ขนาดของโปรแกรมแอปเพล็ต ทีต ้อ งการจะแสดง ่ บนเว็บ เพจ
  • 6. ตัว อย่า งโปรแกรมภาษา HTML <HTML> <HTML> <HEAD> <HEAD> <TITLE>HelloWorld Example</TITLE> <TITLE>HelloWorld Example</TITLE> </HEAD> </HEAD> <BODY> <BODY> <APPLET CODE="HelloWorldApplet.class" <APPLET CODE="HelloWorldApplet.class" WIDTH="300" HEIGHT="300"> WIDTH="300" HEIGHT="300"> </APPLET> </APPLET> </BODY> </BODY> </HTML> </HTML>
  • 7. ขั้น ตอนการพัฒ นาโปรแกรมจาวา แอปเพล็ต  เขีย นโปรแกรมซอร์ด โค้ด (HelloWorldApplet.java) และโปรแกรม เว็บ เพจ (HelloWorld.html) โดยใช้ โปรแกรมอิด เ ตอร์ใ ดๆ ี  คอมไพล์โ ปรแกรม HelloWorldApplet.java โดยใช้ คอมไพเลอร์ด ง นี้ ั javac HelloWorldApplet.java ตัว อย่า งนีจ ะได้โ ปรแกรมไบท์โ ค้ด ที่ช อ ้ ื่ HelloWorldApplet.class  ใช้โ ปรแกรมเว็บ บราวเซอร์ใ ดๆเช่น Internet Explorer หรือ Netscape เปิด โปรแกรมเว็บ เพจที่ ชื่อ HelloWorld.html ซึ่ง จะเรีย กโปรแกรมไบท์โ ค้ด ทีช ื่อ HelloWorldApplet.class โดยอัต โนมัต ิ ่
  • 8. ตัว อย่า งการรัน โปรแกรมบนเว็บ บราวเซอร์
  • 9. ขั้น ตอนการทำา งาน  การรัน โปรแกรมจาวาแอปเพล็ต ภายในโปรแกรม เว็บ บราวเซอร์ จะมีข ั้น ตอนการทำา งานดัง นี้ • โปรแกรมเว็บ บราวเซอร์จ ะโหลด URL ตามตำา แหน่ง ที่ ระบุ • โปรแกรมเว็บ บราวเซอร์จ ะโหลดไฟล์ HTML ที่ร ะบุแ ละ กระทำา คำา สั่ง tag ต่า งๆที่ร ะบุใ นไฟล์ HTML • โปรแกรมเว็บ บราวเซอร์จ ะโหลดโปรแกรมโปรแก รมไบท์โ ค้ด ที่เ ป็น โปรแกรม จาวาแอปเพล็ต ที่ร ะบุใ น tag ที่ช ื่อ APPLET ตาม URL ที่ร ะบุ • โปรแกรมเว็บ บราวเซอร์จ ะรัน โปรแกรมจาวาแอปเพล็ต
  • 11. ความปลอดภัย ในการใช้โ ปรแกรม จาวาแอปเพล็ต  โปรแกรมเว็บ บราวเซอร์ท ร ัน โปรแกรมจาวาแอป ี่ เพล็ต จะต้อ งมี JVM อยูแ ละเนือ งจากโปรแกรมเว็บ ่ ่ บราวเซอร์ส ามารถโหลดโปรแกรมจาวาแอปเพล็ต มาจากเครื่อ งคอมพิว เตอร์แ ม่ข ่า ยอื่น ๆได้ ดัง นัน ้ ภาษาจาวาจึง ได้ก ำา หนดระบบความปลอดภัย ใน การรัน โปรแกรมจาวาแอปเพล็ต เพือ ป้อ งกัน ไม่ใ ห้ ่ โปรแกรมจาวาแอปเพล็ต ทำา งานต่า งๆดัง นี้ • อ่า นหรือ เขีย นไฟล์อ ื่น ๆที่อ ยู่ใ นเครื่อ งที่ร ัน โปรแกรมอยู่ • เรีย กใช้โ ปรแกรมอื่น ๆที่อ ยู่ใ นเครื่อ งที่ร ัน โปรแกรมอยู่ • ติด ต่อ กับ เครื่อ งแม่ข ่า ยอื่น • เรีย กใช้ native method (คำา สั่ง เรีย กเมธอดใน โปรแกรมภาษาอื่น )  กรณีท โ ปรแกรมภาษาจาวาแอปเพล็ต พยายาม ี่
  • 12. Tag ที่ช ื่อ <APPLET>  Tag ทีช ื่อ APPLET มีร ูป แบบดัง นี้ ่ <APPLET code = filename.class width = widthPixels height = heigthPixels [archive = archivefile] [codeapplet = url] [vspace = vMargin] [hspace = hMargin] [align = alignment] [alt = text]> [<PARAM name = attrl value = val1> <PARAM name = attrN value = valN>] </APPLET>
  • 13. Tag ที่ช ื่อ <APPLET> ทีช ื่อ <APPLET> จะมีค ุณ ลัก ษณะที่ต อ งระบุ  tag ่ ้ สามอย่า งคือ • code เพื่อ ระบุช ื่อ โปรแกรมไบท์โ ค้ด ของโปรแกรมจา วาแอปเพล็ต • width เพื่อ ระบุค วามกว้า งของโปรแกรมแอปเพล็ต ที่ ต้อ งแสดงบนเว็บ เพจ • height เพื่อ ระบุค วามสูง ของโปรแกรมแอปเพล็ต ที่ ต้อ งการแสดงบนเว็บ เพจ  นอกจากนีย ัง มีค ุณ ลัก ษณะอื่น ๆทีเ ป็น เงื่อ นไขเพิม ้ ่ ่ เติม ดัง นี้ • ALIGN เพื่อ กำา หนดการวางตำา แหน่ง ของโปรแกรมจา วาแอปเพล็ต • CODEBASE เพื่อ ระบุต ำา แหน่ง ของ URL ที่เ ก็บ โปรแก รมไบท์โ ค้ด ของโปรแกรมจาวาแอปเพล็ต
  • 14. การส่ง พารามิเ ตอร์  คุณ ลัก ษณะทีช ื่อ PARAM ่ จะใช้ใ นการส่ง ผ่า น พารามิเ ตอร์ไ ปยัง โปรแกรม จาวาแอปเพล็ต ได้  รูป แบบของคุณ ลัก ษณะทีช ื่อ PARAM ่ <PARAM name = attr1 VALUE = val1>  ตัว อย่า ง <PARAM name = speed VALUE = "25">  โปรแกรมจาวาแอปเพล็ต สามารถเรีย กดูค ่า พารามิเ ตอร์ ทีจ ะส่ง ผ่า นมาจากโปรแกรม .html ่ โดยใช้ค ุณ ลัก ษณะใน tag ทีช ื่อ APPLET นีไ ด้ โดย ่ ้ ใช้เ มธอดทีช ื่อ getParameter() ่
  • 15. การส่ง พารามิเ ตอร์  รูป แบบของ เมธอด getParameter() String getParameter(String paramName)  เมธอดนี้จ ะส่ง ค่า เป็น ชนิด ข้อ มูล แบบ String คืน มา โดยจะเป็น ค่า ทีอ ยูใ น <PARAM> ทีช ื่อ VALUE ค่า ทีส ่ง ่ ่ ่ ่ กลับ มาจะเป็น case-sensitive แต่ช ื่อ พารามิเ ตอร์ จะไม่ใ ช่ case-sensitive  ตัว อย่า ง getParameter(“SPEED”) จะให้ค ่า กลับ มาเป็น “25” ตามที่ร ะบุไ ว้ใ นตัว อย่า งของ <PARAM> ข้า งต้น  กรณีท ไ ม่พ บพารามิเ ตอร์ต ามชื่อ ทีส ่ง ไปใน ี่ ่ getParameter()เราจะได้ค ่า ทีก ลับ มาเป็น null ่
  • 16. คลาส Applet  เป็น คลาสทีก ำา หนดไว้ใ น Java API ทีอ ยู่ Applet ่ ่ ในแพคเก็จ java.applet  โปรแกรมจาวาแอปเพล็ต ทุก โปรแกรมจะต้อ ง สืบ ทอดมาจากคลาส Applet โดยใช้ค ำา สั่ง extends Applet  คลาส Applet จัด เป็น คลาสประเภท Container ที่ สืบ ทอดมาจากคลาสทีช ื่อ Panel โดยมีก ารจัด วาง ่ ผัง เป็น แบบ FlowLayout  คลาส Appletจึง สามารถทีจ ะใส่อ อปเจ็ค ทีเ ป็น ส่ว น ่ ่ ประกอบกราฟฟิก ของแพคเก็จ AWT ได้  ในกรณีท ต ้อ งการใช้ส ่ว นประกอบกราฟฟิก ของ ี่
  • 17. เมธอดที่ส ำา คัญ ของคลาส Applet  โปรแกรมจาวาแอปเพล็ต จะไม่ม เ มธอดทีช อ main() ี ่ ื่  เมธอดที่ส ำา คัญ ของคลาส Applet มีด ัง นี้ • init() • start() • stop() • destroy() • paint()
  • 18. รายละเอีย ดของเมธอด  init() • เมธอดนี้จ ะถูก เรีย กเพีย งครั้ง เดีย วเมื่อ มีก ารโหลด โปรแกรมจาวาแอปเพล็ต หรือ เมื่อ มีก ารรีโ หลด (reload) โปรแกรมเว็บ บราวเซอร์  start() • เมธอดนี้จ ะถูก เรีย กหลัง จากทำา คำา สั่ง ในเมธอดที่ช ื่อ init() และถูก เรีย กใช้ท ุก ครั้ง ที่ผ ู้ใ ช้ก ลับ มายัง เว็บ เพจที่ มีโ ปรแกรมจาวาแอปเพล็ต หน้า นี้อ ยู่ หรือ ทุก ครั้ง ที่ม ีก าร แสดงเฟรมที่ม ีโ ปรแกรมจาวาแอปเพล็ต หน้า นี้อ ยู่  stop() • เมธอดนี้จ ะถูก เรีย กใช้เ มื่อ ผู้ใ ช้ย ้า ยไปยัง เว็บ เพจหน้า อื่น หรือ เมื่อ มีก ารยกเลิก การแสดงเฟรมที่ม ีโ ปรแกรมจา วาแอปเพล็ต หน้า นี้อ ยู่  destroy() • เมธอดนี้จ ะถูก เรีย กครั้ง เดีย วเมื่อ มีก ารปิด เว็บ บราวเซอร์
  • 19. เมธอด paint()  เป็น เมธอดทีม ค ำา สัง ทีเ กีย วข้อ งกับ การวาดรูป ่ ี ่ ่ ่ กราฟฟิก ต่า งๆ  เมธอด paint() มีร ูป แบบดัง นี้ public void paint(Graphics g) { [statements] }  คำา สั่ง ในเมธอด paint() จะถูก เรีย กใช้ง านหลัง จาก การทำา คำา สัง ในเมธอด start() ทำา ให้ส ามารถทีจ ะ ่ ่ เขีย นรูป ทรงหรือ ข้อ ความทีเ ป็น กราฟฟิก ได้ ่  เมธอด paint()จะถูก เรีย กซำ้า ทุก ครั้ง ทีเ ว็บ ่ บราวเซอร์ม ก ารเปลี่ย นแปลงเช่น การปรับ ขนาด ี
  • 21. คลาส Graphics  การสร้า งภาพกราฟฟิก ในโปรแกรมจาวาแอปเพล็ ตจะทำา ได้โ ดยการ override เมธอด paint()แล้ว เขีย นคำา สั่ง ในการวาดรูป ทรงกราฟฟิก ต่า งๆใน เมธอด  เมธอดในการวาดรูป ทรงต่า งๆ • drawLine() • drawRect(), fillRect() • drawRoundRect(), fillRoundRect() • drawOval(), fillOval() • drawArc(), fillArc() • drawPolygon(), fillPolygon() • drawPolyline() • drawString()  เมธอดทีใ ช้ใ นการจัด การคุณ ลัก ษณะของ ่ กราฟฟิก
  • 22. ตัว อย่า งโปรแกรม import java.awt.*; import java.awt.*; import java.applet.*; import java.applet.*; public class GUIApplet extends Applet { public class GUIApplet extends Applet { public void paint(Graphics g) { public void paint(Graphics g) { g.drawRect(5,5,15,15); g.drawRect(5,5,15,15); g.fillOval(50,50,20,20); g.fillOval(50,50,20,20); g.drawArc(75,25,40,40,0,135); g.drawArc(75,25,40,40,0,135); g.fillArc(80,80,30,30,90,270); g.fillArc(80,80,30,30,90,270); g.drawString("Hello",5,90); g.drawString("Hello",5,90); }} }} ผลลัพ ธ์ท ไ ด้จ ากการรัน โปรแกรม ี่
  • 23. โปรแกรม AWTThread  โปรแกรม GUI จะมีโ ปรแกรมแบบเธรดทีเ รีย กว่า ่ AWTThread ทีเ ป็น โปรแกรมทีป ระมวลผลพร้อ มกัน ่ ่ ซึ่ง จะทำา หน้า ทีค อยตรวจสอบว่า จะต้อ งมีก ารเรีย ก ่ ใช้เ มธอด paint() เพือ วาดรูป ทรงกราฟฟิก ตามคำา ่ สั่ง ทีร ะบุใ ห้แ สดงบนออปเจ็ค ประเภท Container ่ (เช่น Applet) ใหม่ห รือ ไม่  โปรแกรม AWTThread จะเรีย กใช้เ มธอด paint() ใหม่ ในกรณีต ่า งๆอาทิเ ช่น • เมื่อ มีก ารโหลดออปเจ็ค ของคลาสประเภท Container เพื่อ แสดงผลครั้ง แรก • เมื่อ โปรแกรมเปลี่ย นจากไอคอนกลับ มาเป็น โปรแกรมที่ แสดงผลตามหน้า จอปกติ • เมื่อ โปรแกรมเว็บ บราวเซอร์ กลับ มาแสดงเว็บ เพจ
  • 24. เมธอด repaint()  โปรแกรม AWTThread จะเรีย กใช้เ มธอด repaint() เมือ ต้อ งการวาดรูป ทรงกราฟฟิก ใหม่ ซึง เมธอด ่ ่ repaint() จะเรีย กใช้เ มธอด update() อีก ต่อ หนึง ่  โดยทัว ไปเมธอด update() ่ จะมีค ำา สั่ง ในการลบภาพ กราฟฟิก เดิม และเรีย กใช้เ มธอดทีช ื่อ paint() โดย ่ มีร ูป แบบดัง นี้ public void update(Graphics g) { g.clearRect(0,0,width,height); paint(g); }
  • 25. เมธอด update()  เราสามารถทีจ ะ ่ override เมธอดทีช ื่อ update() ่ ใหม่เ พื่อ ไม่ใ ห้ม ก ารลบภาพกราฟฟิก เดิม ได้โ ดย ี กำา หนดรูป แบบคำา สั่ง ดัง นี้ public void update(Graphics g){ paint(g); }
  • 26. การเรีย กใช้เ มธอดต่า งๆของ โปรแกรม AWTThread
  • 27. คำา สัง ด้า น Multimedia ่  โปรแกรมจาวาแอปเพล็ต สามารถทีจ ะแสดง ่ รูป ภาพทีอ ยูฟ อร์แ มตต่า งๆเช่น GIF หรือ JPEG ได้ ่ ่ และสามารถทีจ ะเล่น ไฟล์เ สีย งได้โ ดยมีค ลาสที่ ่ สำา คัญ สองคลาสคือ • คลาส Image ซึ่ง เป็น คลาสที่ใ ช้ใ นการสร้า งออปเจ็ค เพื่อ จัด การกับ ไฟล์ร ูป ภาพ • คลาส AudioClip ซึ่ง เป็น คลาสที่ใ ช้ใ นการสร้า งออปเจ็ค เพื่อ จัด การกับ ไฟล์เ สีย ง
  • 28. คลาส Image  โปรแกรมจาวาแอปเพล็ต สามารถสร้า งออปเจ็ค ของคลาส Image ได้โ ดยเรีย กใช้เ มธอด getImage() ทีอ ยูใ นคลาสทีช อ Applet ซึ่ง มีร ูป แบบดัง นี้ ่ ่ ่ ื่ • Image getImage(URL u) • Image getImage(URL u,String name)  URL เป็น คลาสทีใ ช้ส ร้า งออปเจ็ค เพือ ระบุต ำา แหน่ง ่ ่ URL ของรูป ภาพอาทิเ ช่น • URL u = new URL(“http://java.sun.com”);  กรณีท ต ำา แหน่ง ของไฟล์ร ูป ภาพอยูใ น ี่ ่ URL เดีย ว กับ ตำา แหน่ง ของโปรแกรมเว็บ เพจ เราสามารถ เรีย กใช้เ มธอดทีช ื่อ getDocumentBase()เพือ ระบุ URL ่ ่ ดัง กล่า ว อาทิเ ช่น • Image cat = getImage(getDocumentBase(),“cat.gif”);
  • 29. คลาส Image  ส่ว นในกรณีท ต ำา แหน่ง ของไฟล์ร ูป ภาพมี ี่ URL ตรงกับ ตำา แหน่ง ของโปรแกรมไบท์โ ค้ด ของ โปรแกรมจาวาแอปเพล็ต เราสามารถเรีย กใช้ เมธอดทีช ื่อ getCodeBase() เพือ ระบุ URL ดัง กล่า ว ่ ่ อาทิเ ช่น • Image cat = getImage(getCodeBase(),“cat.gif”);  เมธอด drawImage()ในคลาส Graphics ใช้ใ นการ แสดงรูป ภาพที่ต ำา แหน่ง x, y ดัง นี้ • drawImage(Image im,int x,int y,ImageObserver ob);  เป็น อิน เตอร์เ ฟสทีใ ช้ร ะบุเ มือ มีก าร ImageObserver ่ ่ เปลี่ย นสถานะของรูป ภาพ
  • 30. ตัว อย่า งโปรแกรม import java.awt.*; import java.awt.*; import java.applet.*; import java.applet.*; public class ImageDemo extends Applet{ public class ImageDemo extends Applet{ Image im; Image im; public void init() { public void init() { im = getImage(getDocumentBase(), "duke.gif"); im = getImage(getDocumentBase(), "duke.gif"); }} public void paint(Graphics g){ public void paint(Graphics g){ g.drawImage(im, 20, 20, this); g.drawImage(im, 20, 20, this); }} }}
  • 31. คลาส AudioClip  โปรแกรมจาวาแอปเพล็ต สามารถสร้า งออปเจ็ค ของคลาส AudioClip ได้โ ดยใช้เ มธอด getAudioClip()ซึ่ง มีร ูป แบบดัง นี้ • AudioClip getAudioClip(URL u) • AudioClip getAudioClip(URL u,String name)  คลาส AudioClip มีเ มธอดทีเ กี่ย วข้อ งกับ การเล่น ่ เสีย งดัง นี้ • play() • loop() • stop()  นอกจากนีค ลาส Applet ้ ยัง มีเ มธอด play() ที่ สนับ สนุน การเล่น ไฟล์เ สีย ง โดยไม่จ ำา เป็น ต้อ ง สร้า งออปเจ็ค ของคลาส AudioClip โดยมีร ูป แบบ ดัง นี้
  • 32. ตัว อย่า งโปรแกรม import java.awt.*; import java.awt.*; import java.applet.*; import java.applet.*; public class MusicDemo extends Applet {{ public class MusicDemo extends Applet AudioClip sound; AudioClip sound; public void init() {{ public void init() sound == getAudioClip(getDocumentBase(), sound getAudioClip(getDocumentBase(), "spacemusic.au"); "spacemusic.au"); }} public void paint(Graphics g){ public void paint(Graphics g){ sound.loop(); sound.loop(); }} public void stop() {{ public void stop() sound.stop(); sound.stop(); }} }}
  • 33. โปรแกรมจาวาแอปเพล็ต ที่โ ต้ต อบ กับ ผู้ใ ช้  คลาส Appletเป็น คลาสประเภท Container และ สามารถทีจ ะรับ ฟัง เหตุก ารณ์ท างกราฟฟิก ต่า งๆได้ ่ อาทิเ ช่น • ActionListener • MouseListener • MouseMotionListener • KeyListListener • FocusListener
  • 34. ตัว อย่า งโปรแกรมจาวาแอปเพล็ต ที่ มีส ่ว นติด ต่อ กับ ผู้ใ ช้ import java.awt.*; import java.awt.*; import java.awt.event.*; import java.awt.event.*; import java.applet.*; import java.applet.*; public class MusicGUI extends Applet implements public class MusicGUI extends Applet implements ActionListener { ActionListener { AudioClip sound; AudioClip sound; Button bn1, bn2; public void init() { Button bn1, bn2; public void init() { sound = getAudioClip(getDocumentBase(), sound = getAudioClip(getDocumentBase(), "spacemusic.au"); "spacemusic.au"); bn1 = new Button("PLAY"); bn1 = new Button("PLAY"); bn2 = new Button("STOP"); bn2 = new Button("STOP"); add(bn1); add(bn1); add(bn2); add(bn2);
  • 35. ตัว อย่า งโปรแกรมจาวาแอปเพล็ต ที่ มีส ่ว นติด ต่อ กับ ผู้ใ ช้ bn1.addActionListener(this); bn1.addActionListener(this); bn2.addActionListener(this); bn2.addActionListener(this); bn1.setEnabled(true); bn1.setEnabled(true); bn2.setEnabled(false); bn2.setEnabled(false); }} public void stop() { public void stop() { sound.stop(); sound.stop(); }} public void actionPerformed(ActionEvent ev) { public void actionPerformed(ActionEvent ev) { String cmd = ev.getActionCommand(); String cmd = ev.getActionCommand();
  • 36. ตัว อย่า งโปรแกรมจาวาแอปเพล็ต ที่ มีส ่ว นติด ต่อ กับ ผู้ใ ช้ if (cmd.equals("PLAY")) { if (cmd.equals("PLAY")) { sound.loop(); sound.loop(); bn2.setEnabled(true); bn2.setEnabled(true); bn1.setEnabled(false); bn1.setEnabled(false); } else if (cmd.equals("STOP")) { } else if (cmd.equals("STOP")) { sound.stop(); sound.stop(); bn2.setEnabled(false); bn2.setEnabled(false); bn1.setEnabled(true); bn1.setEnabled(true); }} }} }}
  • 37. สรุป เนื้อ หาของบท  โปรแกรมจาวาแอปเพล็ต สามารถรัน ภายใต้เ ว็บ บราวเซอร์ไ ด้ โดยจะต้อ งระบุช ื่อ โปรแกรมไว้ ภายใน tag <APPLET> ในไฟล์ HTML  โปรแกรมจาวาแอปเพล็ต ทุก โปรแกรมจะต้อ ง สืบ ทอดมาจากคลาส Applet โดยใช้ค ำา สัง extends ่ Applet และจะเริ่ม ต้น ทำา งานทีเ มธอด init() ่  คลาส Applet มีเ มธอดทีส ำา คัญ คือ เมธอด ่ init(),start(),stop(), destroy() และ paint()  เมธอดของคลาส Graphics สามารถนำา ไปใช้ใ นการ วาดรูป กราฟฟิก ต่า งๆได้ เช่น drawLine(),drawPolyline(),drawRect() และ fillRect() เป็น ต้น
  • 38. สรุป เนื้อ หาของบท  เมธอดทีร ับ ่ argument เข้า มาเป็น ออปเจ็ค ของ คลาส Graphics คือ เมธอด paint() และ update()  คลาส Image เป็น คลาสทีเ ก็บ ออปเจ็ค ของไฟล์ ่ รูป ภาพ  คลาส AudioClip เป็น คลาสทีเ ก็บ ออปเจ็ค ของไฟล์ ่ เสีย ง  Applet สามารถทีจ ะรับ ฟัง เหตุก ารณ์ต่า งๆได้ เช่น ่ ActionListener, MouseListener และ KeyListListener เป็น ต้น
  • 39. แบบฝึก หัด  ข้อ ที่ 1 • ทดลองเขีย นโปรแกรมจาวา แอปเพล็ต เพื่อ เป็น บอร์ด สำา หรับ การวาดรูป แบบ free hand  ข้อ ที่ 2 • ทดลองปรับ ปรุง GUI ของโปรแกรมจำา ลองระบบ ธนาคารให้ส ามารถเรีย กใช้ง านผ่า น Web Browser ได้