บทท ่ี8it.nrru.ac.th/krit/410303/chap08.pdf · 2016-02-17 ·...

39
8 บทที 8 ปรแกรมจาวาแอปเพล็ต (Java Applet)

Upload: others

Post on 05-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

8บทท 8

โปรแกรมจาวาแอปเพลต

(Java Applet)

Page 2: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

วตถประสงค

แนะนาการเขยนโปรแกรมจาวาแอปเพลต

แนะนาตวอยางไฟล HTML ทม tag <APPLET> เพอเรยกใชโปรแกรมจาวา แนะนาตวอยางไฟล HTML ทม tag <APPLET> เพอเรยกใชโปรแกรมจาวา แอปเพลต

แนะนาคลาส Applet และเมธอดทสาคญของคลาสแนะนาคลาส Applet และเมธอดทสาคญของคลาส

แนะนาคลาส Graphics และเมธอดสาคญๆทเกยวของกบคลาส

แนะนาวธการเขยนโปรแกรมจาวาแอปเพลตเพอจดการกบไฟลภาพและไฟลเสยง

แนะนาการเขยนโปรแกรมจาวาแอปเพลตทมสวนตดตอกบผใช

Page 3: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โ โปรแกรมจาวาแอปเพลต

โปรแกรมจาวาแอปเพลต (Applet) คอโปรแกรมภาษาจาวาทสามารถทางานภายใตโปรแกรมเวบบราวเซอร (Web Browser) ทม JVM อย

โปรแกรมจาวาแอปเพลตจะประกอบดวยไฟลโปรแกรมสองไฟลคอ• โปรแกรมภาษาจาวา (.java)• โปรแกรมภาษา HTML (.html)

โปรแกรมจาวาแอปเพลตจะแตกตางจากโปรแกรมจาวาประยกตตรงทไมมเมธอดทชอ main() และจะไมสามารถทางานตามลาพงได แตจะตองเรยกใชโดยผานโปรแกรมภาษา HTML

Page 4: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โ ตวอยางโปรแกรมจาวาแอปเพลต

import java.awt.*;

import java.applet.*;

public class HelloWorldApplet extends Applet {

public void paint(Graphics g) {p p p g

g.drawString("Hello World",20,20);

}

}}

Page 5: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โโปรแกรมภาษา HTML

โปรแกรมภาษา HTML จะม tag ทชอ <APPLET> เพอใชในการระบโปรแกรมไบทโคดทไดมาจากการคอมไพลโปรแกรมจาวาแอปเพลตซง

ใ โ ไ โ ภายใน tag นจะมคณลกษณะ (attribute) ตางๆคอ ชอของโปรแกรมไบทโคด (.class) และขนาดของโปรแกรมแอปเพลตทตองการจะแสดงบนเวบเพจ

Page 6: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โตวอยางโปรแกรมภาษา HTML

<HTML>

<HEAD>

/<TITLE>HelloWorld Example</TITLE>

</HEAD>

<BODY>

<APPLET CODE="HelloWorldApplet.class"

WIDTH="300" HEIGHT="300"></APPLET></APPLET>

</BODY>

</HTML>

Page 7: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โ ขนตอนการพฒนาโปรแกรมจาวาแอปเพลต

เขยนโปรแกรมซอรดโคด (HelloWorldApplet.java) และโปรแกรม เวบเพจ (HelloWorld.html) โดยใชโปรแกรมอดเตอรใดๆ

คอมไพลโปรแกรม HelloWorldApplet.java โดยใชคอมไพเลอรดงน

ja ac HelloWorldApplet ja ajavac HelloWorldApplet.java

ตวอยางนจะไดโปรแกรมไบทโคดทชอ HelloWorldApplet.class

ใชโปรแกรมเวบบราวเซอรใดๆเชน Internet Explorer หรอ Netscape เปดโปรแกรมเวบเพจทชอ HelloWorld.html ซงจะเรยกโปรแกรมไบทโคด ทชอ HelloWorldApplet.class โดยอตโนมต

Page 8: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โ ตวอยางการรนโปรแกรมบนเวบบราวเซอร

Page 9: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

ขนตอนการทางาน

การรนโปรแกรมจาวาแอปเพลตภายในโปรแกรมเวบบราวเซอร จะมขนตอนการทางานดงน

โ โ • โปรแกรมเวบบราวเซอรจะโหลด URL ตามตาแหนงทระบ• โปรแกรมเวบบราวเซอรจะโหลดไฟล HTML ทระบและกระทาคาสง tag ตางๆทระบในไฟล HTMLในไฟล HTML

• โปรแกรมเวบบราวเซอรจะโหลดโปรแกรมโปรแกรมไบทโคด ทเปนโปรแกรม จาวาแอปเพลตทระบใน tag ทชอ APPLET ตาม URL ทระบโป โป ป • โปรแกรมเวบบราวเซอรจะรนโปรแกรมจาวาแอปเพลต

Page 10: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

รปแสดงขนตอนการทางาน

Page 11: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

ใ ใ โ ความปลอดภยในการใชโปรแกรมจาวาแอปเพลต

โปรแกรมเวบบราวเซอรทรนโปรแกรมจาวาแอปเพลตจะตองม JVM อยและเนองจากโปรแกรมเวบบราวเซอรสามารถโหลดโปรแกรมจาวาแอปเพลต

ไ ไ มาจากเครองคอมพวเตอรแมขายอนๆได ดงนนภาษาจาวาจงไดกาหนดระบบความปลอดภยในการรนโปรแกรมจาวาแอปเพลต เพอปองกนไมใหโป ป โปรแกรมจาวาแอปเพลตทางานตางๆดงน• อานหรอเขยนไฟลอนๆทอยในเครองทรนโปรแกรมอย• เรยกใชโปรแกรมอนๆทอยในเครองทรนโปรแกรมอยๆ • ตดตอกบเครองแมขายอน• เรยกใช native method (คาสงเรยกเมธอดในโปรแกรมภาษาอน)

กรณทโปรแกรมภาษาจาวาแอปเพลตพยายามเรยกใชคาสงทโปรแกรมเวบบราวเซอรไมอนญาตใหทาเหลาน โปรแกรมจะสงขอผดพลาดทชอ SecurityException กลบมา

Page 12: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

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

Page 13: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

Tag ทชอ <APPLET>

tag ทชอ <APPLET> จะมคณลกษณะทตองระบสามอยางคอ• code เพอระบชอโปรแกรมไบทโคดของโปรแกรมจาวาแอปเพลต

โป ป • width เพอระบความกวางของโปรแกรมแอปเพลตทตองแสดงบนเวบเพจ• height เพอระบความสงของโปรแกรมแอปเพลตทตองการแสดงบนเวบเพจ

ป ไ นอกจากนยงมคณลกษณะอนๆทเปนเงอนไขเพมเตมดงน• ALIGN เพอกาหนดการวางตาแหนงของโปรแกรมจาวาแอปเพลต• CODEBASE เพอระบตาแหนงของ URL ทเกบโปรแกรมไบทโคดของโปรแกรมจาวาแอปเพลต

• ARCHIVE เพอระบคลาสหรอไฟลแบบ JAR ทตองการใหโหลดขนมาไวALT เพอระบขอความทตองการใหเวบเพจแสดงในกรณทไมสามารถโหลดโปรแกรม• ALT เพอระบขอความทตองการใหเวบเพจแสดงในกรณทไมสามารถโหลดโปรแกรมไบทโคดได

• VSPACE คอระยะหางทางแนวตงของโปรแกรมจาวาแอปเพลต• HSPACE คอระยะหางทางแนวนอนของโปรแกรมจาวาแอปเพลต

Page 14: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

การสงพารามเตอร

คณลกษณะทชอ PARAM จะใชในการสงผานพารามเตอรไปยงโปรแกรม จาวาแอปเพลตได

รปแบบของคณลกษณะทชอ PARAM <PARAM name = attr1 VALUE = val1>

ตวอยาง<PARAM name = speed VALUE = "25">

โปรแกรมจาวาแอปเพลตสามารถเรยกดคาพารามเตอร ทจะสงผานมาจากโปรแกรม .html โดยใชคณลกษณะใน tag ทชอ APPLET นได โดยใชเมธอด ทชอ getParameter()

Page 15: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

การสงพารามเตอร

รปแบบของเมธอด getParameter()String getParameter(String paramName)

เมธอดนจะสงคาเปนชนดขอมลแบบ String คนมาโดยจะเปนคาทอยใน <PARAM> ทชอ VALUE คาทสงกลบมาจะเปน case-sensitive แตชอ

ไ ใ พารามเตอรจะไมใช case-sensitive

ตวอยางgetParameter(“SPEED”)

จะใหคากลบมาเปน “25” ตามทระบไวในตวอยางของ <PARAM> ขางตน

ไ ไปใ ไ กรณทไมพบพารามเตอรตามชอทสงไปใน getParameter()เราจะไดคาทกลบมาเปน null

Page 16: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

คลาส Applet

Applet เปนคลาสทกาหนดไวใน Java API ทอยในแพคเกจ java.applet โปรแกรมจาวาแอปเพลตทกโปรแกรมจะตองสบทอดมาจากคลาส Appletโปรแกรมจาวาแอปเพลตทกโปรแกรมจะตองสบทอดมาจากคลาส Applet

โดยใชคาสง extends Applet

คลาส Applet จดเปนคลาสประเภท Container ทสบทอดมาจากคลาสทคลาส Applet จดเปนคลาสประเภท Container ทสบทอดมาจากคลาสทชอ Panel โดยมการจดวางผงเปนแบบ FlowLayout

ใ ป ป ป ฟฟคลาส Applet จงสามารถทจะใสออปเจคทเปนสวนประกอบกราฟฟกของแพคเกจ AWT ได

ในกรณทตองการใชสวนประกอบกราฟฟกของแพคเกจ javax.swing

โปรแกรมจาวาแอปเพลตจะตองสบทอดมาจากคลาสทชอ JApplet

Page 17: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

เมธอดทสาคญของคลาส Applet

โปรแกรมจาวาแอปเพลตจะไมมเมธอดทชอ main()

เมธอดทสาคญของคลาส Applet มดงนเมธอดทสาคญของคลาส Applet มดงน• init()• start()• stop()p()• destroy() • paint()

Page 18: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

รายละเอยดของเมธอด

init()• เมธอดนจะถกเรยกเพยงครงเดยวเมอมการโหลดโปรแกรมจาวาแอปเพลต หรอเมอมการรโหลด (reload) โปรแกรมเวบบราวเซอรมการรโหลด (reload) โปรแกรมเวบบราวเซอร

start()• เมธอดนจะถกเรยกหลงจากทาคาสงในเมธอดทชอ init() และถกเรยกใชทกครง

ทผใชกลบมายงเวบเพจทมโปรแกรมจาวาแอปเพลตหนานอย หรอทกครงทมการแสดงเฟรมทมโปรแกรมจาวาแอปเพลตหนานอย

t () stop()• เมธอดนจะถกเรยกใชเมอผใชยายไปยงเวบเพจหนาอน หรอเมอมการยกเลกการแสดงเฟรมทมโปรแกรมจาวาแอปเพลตหนานอย

destroy()• เมธอดนจะถกเรยกครงเดยวเมอมการปดเวบบราวเซอร

Page 19: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

เมธอด paint()

เปนเมธอดทมคาสงทเกยวของกบการวาดรปกราฟฟกตางๆ

เมธอด paint() มรปแบบดงนเมธอด paint() มรปแบบดงน

public void paint(Graphics g) {

[statements]

}

ใ ใ ใคาสงในเมธอด paint() จะถกเรยกใชงานหลงจากการทาคาสงในเมธอด start() ทาใหสามารถทจะเขยนรปทรงหรอขอความทเปนกราฟฟกได

เมธอด paint() จะถกเรยกซาทกครงทเวบบราวเซอรมการเปลยนแปลงเชน การปรบขนาดหรอมการเคลอนท

Page 20: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

ขนตอนการทางานของเมธอด

Page 21: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

คลาส Graphics

การสรางภาพกราฟฟกในโปรแกรมจาวาแอปเพลตจะทาไดโดยการ override เมธอด paint()แลวเขยนคาสงในการวาดรปทรงกราฟฟกตางๆในเมธอด

เมธอดในการวาดรปทรงตางๆ• drawLine()d R t() fillR t()• drawRect(), fillRect()

• drawRoundRect(), fillRoundRect()• drawOval(), fillOval()• drawArc(), fillArc()drawArc(), fillArc()• drawPolygon(), fillPolygon()• drawPolyline()• drawString()

เมธอดทใชในการจดการคณลกษณะของกราฟฟก• setColor()• setFont()• setFont()

Page 22: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โตวอยางโปรแกรม

import java.awt.*;

import java.applet.*;

public class GUIApplet extends Applet {

public void paint(Graphics g) {

g drawRect(5 5 15 15);g.drawRect(5,5,15,15);

g.fillOval(50,50,20,20);

g.drawArc(75,25,40,40,0,135);

g.fillArc(80,80,30,30,90,270);

g.drawString("Hello",5,90);

}

}

ผลลพธทไดจากการรนโปรแกรมผลลพธทไดจากการรนโปรแกรม

Page 23: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โโปรแกรม AWTThread

โปรแกรม GUI จะมโปรแกรมแบบเธรดทเรยกวา AWTThread ทเปนโปรแกรมทประมวลผลพรอมกน ซงจะทาหนาทคอยตรวจสอบวาจะตองม

ใ ใ การเรยกใชเมธอด paint() เพอวาดรปทรงกราฟฟกตามคาสงทระบใหแสดงบนออปเจคประเภท Container (เชน Applet) ใหมหรอไม

โปรแกรม AWTThread จะเรยกใชเมธอด paint() ใหมในกรณตางๆอาทเชน

โ • เมอมการโหลดออปเจคของคลาสประเภท Container เพอแสดงผลครงแรก• เมอโปรแกรมเปลยนจากไอคอนกลบมาเปนโปรแกรมทแสดงผลตามหนาจอปกต• เมอโปรแกรมเวบบราวเซอร กลบมาแสดงเวบเพจหนาทมโปรแกรมจาวาแอปเพลต เมอโปรแกรมเวบบราวเซอร กลบมาแสดงเวบเพจหนาทมโปรแกรมจาวาแอปเพลต อย

Page 24: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

เมธอด repaint()

โปรแกรม AWTThread จะเรยกใชเมธอด repaint() เมอตองการวาดรปทรงกราฟฟกใหม ซงเมธอด repaint() จะเรยกใชเมธอด update()

อกตอหนง

โดยทวไปเมธอด update() จะมคาสงในการลบภาพกราฟฟกเดมและเรยกใชเมธอดทชอ paint() โดยมรปแบบดงน

public void update(Graphics g) {public void update(Graphics g) {

g.clearRect(0,0,width,height);

paint(g);paint(g);

}

Page 25: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

เมธอด update()

เราสามารถทจะ override เมธอดทชอ update() ใหมเพอไมใหมการลบภาพกราฟฟกเดมไดโดยกาหนดรปแบบคาสงดงน

public void update(Graphics g){

paint(g);paint(g);

}

Page 26: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

ใ โการเรยกใชเมธอดตางๆของโปรแกรม AWTThread

Page 27: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

คาสงดาน Multimedia

โปรแกรมจาวาแอปเพลตสามารถทจะแสดงรปภาพทอยฟอรแมตตางๆเชน GIF หรอ JPEG ได และสามารถทจะเลนไฟลเสยงไดโดยมคลาสทสาคญสองคลาสคอ• คลาส Image ซงเปนคลาสทใชในการสรางออปเจคเพอจดการกบไฟลรปภาพ• คลาส AudioClip ซงเปนคลาสทใชในการสรางออปเจคเพอจดการกบไฟลเสยง• คลาส AudioClip ซงเปนคลาสทใชในการสรางออปเจคเพอจดการกบไฟลเสยง

Page 28: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

คลาส Image

โปรแกรมจาวาแอปเพลตสามารถสรางออปเจคของคลาส Image ไดโดยเรยกใชเมธอด getImage() ทอยในคลาสทชอ Applet ซงมรปแบบดงน

• Image getImage(URL u)• Image getImage(URL u,String name)

URL เปนคลาสทใชสรางออปเจคเพอระบตาแหนง URL ของรปภาพอาทเชน URL เปนคลาสทใชสรางออปเจคเพอระบตาแหนง URL ของรปภาพอาทเชน• URL u = new URL(“http://java.sun.com”);

กรณทตาแหนงของไฟลรปภาพอยใน URL เดยวกบตาแหนงของโปรแกรมเวบกรณทตาแหนงของไฟลรปภาพอยใน URL เดยวกบตาแหนงของโปรแกรมเวบเพจ เราสามารถเรยกใชเมธอดทชอ getDocumentBase()เพอระบ URLดงกลาว อาทเชน

• Image cat = getImage(getDocumentBase(),“cat.gif”);

Page 29: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

คลาส Image

สวนในกรณทตาแหนงของไฟลรปภาพม URL ตรงกบตาแหนงของโปรแกรมไบทโคดของโปรแกรมจาวาแอปเพลต เราสามารถเรยกใชเมธอดทชอ

getCodeBase() เพอระบ URL ดงกลาวอาทเชน• Image cat = getImage(getCodeBase(),“cat.gif”);

ใ ใ ใ ป เมธอด drawImage()ในคลาส Graphics ใชในการแสดงรปภาพทตาแหนง x, y ดงน

• drawImage(Image im,int x,int y,ImageObserver ob);drawImage(Image im,int x,int y,ImageObserver ob);

ImageObserver เปนอนเตอรเฟสทใชระบเมอมการเปลยนสถานะของรปภาพ

Page 30: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โตวอยางโปรแกรม

import java.awt.*;

import java.applet.*;

public class ImageDemo extends Applet{

Image im;

public void init() {public void init() {

im = getImage(getDocumentBase(), "duke.gif");

}}

public void paint(Graphics g){

g.drawImage(im, 20, 20, this);

}

}

Page 31: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

คลาส AudioClip

โปรแกรมจาวาแอปเพลตสามารถสรางออปเจคของคลาส AudioClip ไดโดยใชเมธอด getAudioClip()ซงมรปแบบดงน

• AudioClip getAudioClip(URL u)• AudioClip getAudioClip(URL u,String name)

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

นอกจากนคลาส Applet ยงมเมธอด play() ทสนบสนนการเลนไฟลเสยง โดยไมจาเปนตองสรางออปเจคของคลาส AudioClip โดยมรปแบบเสยง โดยไมจาเปนตองสรางออปเจคของคลาส AudioClip โดยมรปแบบดงน

• play(URL u)l (URL St i g m )• play(URL u,String name)

Page 32: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โตวอยางโปรแกรม

i t j t *import java.awt.*;

import java.applet.*;

public class MusicDemo extends Applet {

AudioClip sound;

public void init() {p () {

sound = getAudioClip(getDocumentBase(),

"spacemusic.au");

}

public void paint(Graphics g){

sound.loop();p();

}

public void stop() {

sound stop();

}

sound.stop();

}

}

Page 33: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โ โโปรแกรมจาวาแอปเพลตทโตตอบกบผใช

คลาส Applet เปนคลาสประเภท Container และสามารถทจะรบฟงเหตการณทางกราฟฟกตางๆได อาทเชน

• ActionListener• MouseListener• MouseMotionListener• KeyListener• KeyListener• FocusListener

Page 34: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โ ใ ตวอยางโปรแกรมจาวาแอปเพลตทมสวนตดตอกบผใช

import java.awt.*;

import java.awt.event.*;

import java.applet.*;p j pp

public class MusicGUI extends Applet implements ActionListener {

AudioClip sound;

Button bn1 bn2; public void init() {Button bn1, bn2; public void init() {

sound = getAudioClip(getDocumentBase(), "spacemusic.au");

bn1 = new Button("PLAY");bn1 = new Button( PLAY );

bn2 = new Button("STOP");

add(bn1);

add(bn2);

Page 35: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โ ใ ตวอยางโปรแกรมจาวาแอปเพลตทมสวนตดตอกบผใช

bn1.addActionListener(this);

bn2.addActionListener(this);

bn1.setEnabled(true);

bn2.setEnabled(false);

}

public void stop() {

sound stop();sound.stop();

}

public void actionPerformed(ActionEvent ev) {

String cmd = ev.getActionCommand();

Page 36: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

โ ใ ตวอยางโปรแกรมจาวาแอปเพลตทมสวนตดตอกบผใช

if (cmd.equals("PLAY")) {

sound.loop();

bn2 setEnabled(true);bn2.setEnabled(true);

bn1.setEnabled(false);

} else if (cmd.equals("STOP")) {

sound.stop();

bn2.setEnabled(false);

bn1.setEnabled(true);

}

}

}}

Page 37: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

สรปเนอหาของบท

โปรแกรมจาวาแอปเพลตสามารถรนภายใตเวบบราวเซอรได โดยจะตองระบชอโปรแกรมไวภายใน tag <APPLET> ในไฟล HTML

โปรแกรมจาวาแอปเพลตทกโปรแกรมจะตองสบทอดมาจากคลาส Appletโดยใชคาสง extends Applet และจะเรมตนทางานทเมธอด init()

คลาส Applet มเมธอดทสาคญคอเมธอด init(),start(),stop(), destroy() และ paint() destroy() และ paint()

เมธอดของคลาส Graphics สามารถนาไปใชในการวาดรปกราฟฟกตางๆได เชน drawLine() drawPolyline() drawRect() และ ได เชน drawLine(),drawPolyline(),drawRect() และ fillRect() เปนตน

Page 38: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

สรปเนอหาของบท

เมธอดทรบ argument เขามาเปนออปเจคของคลาส Graphics คอเมธอด paint() และ update()

คลาส Image เปนคลาสทเกบออปเจคของไฟลรปภาพ

คลาส A dioClip เปนคลาสทเกบออปเจคของไฟลเสยงคลาส AudioClip เปนคลาสทเกบออปเจคของไฟลเสยง

Applet สามารถทจะรบฟงเหตการณตางๆได เชน ActionListener,

ป MouseListener และ KeyListListener เปนตน

Page 39: บทท ่ี8it.nrru.ac.th/krit/410303/Chap08.pdf · 2016-02-17 · เมธอดท่ีสาคํญของคลาสั Applet โปรแกรมจาวาแอปเพล็ตจะไม่มีเมธอดท

แบบฝกหด

ขอท 1• ทดลองเขยนโปรแกรมจาวา แอปเพลต เพอเปนบอรดสาหรบการวาดรปแบบ free

hand

2ขอท 2• ทดลองปรบปรง GUI ของโปรแกรมจาลองระบบธนาคารใหสามารถเรยกใชงานผาน

Web Browser ได