SlideShare a Scribd company logo
1 of 39
บทที่ 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

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

What's hot (18)

Java AWT
Java AWTJava AWT
Java AWT
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุต
 
Java Programming [12/12] : Thread
Java Programming [12/12] : ThreadJava Programming [12/12] : Thread
Java Programming [12/12] : Thread
 
Java Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุมJava Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุม
 
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐานการเขียนคำสั่งควบคุมขั้นพื้นฐาน
การเขียนคำสั่งควบคุมขั้นพื้นฐาน
 
รายงาน คอม
รายงาน คอมรายงาน คอม
รายงาน คอม
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
องค์ประกอบของวิชวลเบสิก
องค์ประกอบของวิชวลเบสิกองค์ประกอบของวิชวลเบสิก
องค์ประกอบของวิชวลเบสิก
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่น
 
Java Programming: การจัดการกับข้อผิดพลาด
Java Programming: การจัดการกับข้อผิดพลาดJava Programming: การจัดการกับข้อผิดพลาด
Java Programming: การจัดการกับข้อผิดพลาด
 
ส่วนประกอบวิชวลเบสิก
ส่วนประกอบวิชวลเบสิกส่วนประกอบวิชวลเบสิก
ส่วนประกอบวิชวลเบสิก
 
PHP Tutorial (introduction)
PHP Tutorial (introduction)PHP Tutorial (introduction)
PHP Tutorial (introduction)
 
Lesson5
Lesson5Lesson5
Lesson5
 
Vb6 3 ActiveX Control พื้นฐาน
Vb6 3 ActiveX Control พื้นฐาน Vb6 3 ActiveX Control พื้นฐาน
Vb6 3 ActiveX Control พื้นฐาน
 
Java Programming [9/12]: Exception Handling
Java Programming [9/12]: Exception HandlingJava Programming [9/12]: Exception Handling
Java Programming [9/12]: Exception Handling
 
66
6666
66
 
รายงาน window
รายงาน windowรายงาน window
รายงาน window
 

Similar to Java Programming [10/12]: Java Applet

Php dreamwaver
Php dreamwaverPhp dreamwaver
Php dreamwaverphochai
 
Javacentrix com chap05-0
Javacentrix com chap05-0Javacentrix com chap05-0
Javacentrix com chap05-0Theeravaj Tum
 
การพัฒนาโปรแกรม วิชญา
การพัฒนาโปรแกรม วิชญาการพัฒนาโปรแกรม วิชญา
การพัฒนาโปรแกรม วิชญาwinewic199
 
คู่มือการใช้งานระบบจัดเก็บข้อมูลบุคลากร ฝ่ายเดินรถ แขวงนครสวรรค์ การรถไฟแห่งป...
คู่มือการใช้งานระบบจัดเก็บข้อมูลบุคลากร ฝ่ายเดินรถ แขวงนครสวรรค์ การรถไฟแห่งป...คู่มือการใช้งานระบบจัดเก็บข้อมูลบุคลากร ฝ่ายเดินรถ แขวงนครสวรรค์ การรถไฟแห่งป...
คู่มือการใช้งานระบบจัดเก็บข้อมูลบุคลากร ฝ่ายเดินรถ แขวงนครสวรรค์ การรถไฟแห่งป...Arrat Krupeach
 
Joomla-installation
Joomla-installationJoomla-installation
Joomla-installationSo Pias
 
คู่มือ Dream cs3
คู่มือ Dream cs3คู่มือ Dream cs3
คู่มือ Dream cs3Natda Wanatda
 
Dream weaver cs3
Dream weaver cs3Dream weaver cs3
Dream weaver cs3first351
 
20100831 wordpress-extension
20100831 wordpress-extension20100831 wordpress-extension
20100831 wordpress-extensionpornpimolc
 
20100831 wordpress-extension
20100831 wordpress-extension20100831 wordpress-extension
20100831 wordpress-extensionAree Taylor
 
20100806 wordpress-server2 go
20100806 wordpress-server2 go20100806 wordpress-server2 go
20100806 wordpress-server2 gotaweesit doh
 

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

Doc1
Doc1Doc1
Doc1
 
Php dreamwaver
Php dreamwaverPhp dreamwaver
Php dreamwaver
 
joomla-2-5-install-appserv
joomla-2-5-install-appservjoomla-2-5-install-appserv
joomla-2-5-install-appserv
 
Wordpress 3.5 -install-appserv
Wordpress 3.5 -install-appservWordpress 3.5 -install-appserv
Wordpress 3.5 -install-appserv
 
Javacentrix com chap05-0
Javacentrix com chap05-0Javacentrix com chap05-0
Javacentrix com chap05-0
 
Java 7&12 6 2
Java 7&12 6 2Java 7&12 6 2
Java 7&12 6 2
 
Know 1 1
Know 1 1Know 1 1
Know 1 1
 
การพัฒนาโปรแกรม วิชญา
การพัฒนาโปรแกรม วิชญาการพัฒนาโปรแกรม วิชญา
การพัฒนาโปรแกรม วิชญา
 
Lab Computer Programming 1
Lab Computer Programming 1Lab Computer Programming 1
Lab Computer Programming 1
 
Chapter1
Chapter1Chapter1
Chapter1
 
คู่มือการใช้งานระบบจัดเก็บข้อมูลบุคลากร ฝ่ายเดินรถ แขวงนครสวรรค์ การรถไฟแห่งป...
คู่มือการใช้งานระบบจัดเก็บข้อมูลบุคลากร ฝ่ายเดินรถ แขวงนครสวรรค์ การรถไฟแห่งป...คู่มือการใช้งานระบบจัดเก็บข้อมูลบุคลากร ฝ่ายเดินรถ แขวงนครสวรรค์ การรถไฟแห่งป...
คู่มือการใช้งานระบบจัดเก็บข้อมูลบุคลากร ฝ่ายเดินรถ แขวงนครสวรรค์ การรถไฟแห่งป...
 
Joomla-installation
Joomla-installationJoomla-installation
Joomla-installation
 
Computer Programming 1
Computer Programming 1Computer Programming 1
Computer Programming 1
 
คู่มือ Dream cs3
คู่มือ Dream cs3คู่มือ Dream cs3
คู่มือ Dream cs3
 
Dream weaver cs3
Dream weaver cs3Dream weaver cs3
Dream weaver cs3
 
20100831 wordpress-extension
20100831 wordpress-extension20100831 wordpress-extension
20100831 wordpress-extension
 
20100831 wordpress-extension
20100831 wordpress-extension20100831 wordpress-extension
20100831 wordpress-extension
 
Wordpress.org Extension
Wordpress.org ExtensionWordpress.org Extension
Wordpress.org Extension
 
20100806 wordpress-server2 go
20100806 wordpress-server2 go20100806 wordpress-server2 go
20100806 wordpress-server2 go
 
20100806 wordpress-server2 go
20100806 wordpress-server2 go20100806 wordpress-server2 go
20100806 wordpress-server2 go
 

More from IMC Institute

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

More from IMC Institute (20)

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

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 ได้