Professional Documents
Culture Documents
บทที่ 9 Applet
โปรแกรมประเภท applet ตองเปน sub-class ของ class Applet ซึง่ กําหนดไวใน package
java.applet
applet มีวงจรชีวิตดังแสดงในแผนภาพตอไปนี้
2/2545 1
CS313: Object-Oriented Programming บทที่ 9: Applet
รายละเอียดของแตละขั้นตอนมีดังนี้
1. Constructor stage ขัน้ ตอนนี้ไมปรากฏในวงจรชีวิตของ applet แตเปนขั้นตอนปกติของการ
เขียนโปรแกรมเชิงวัตถุทั่วๆ ไป แมโปรแกรมที่เขียนจะไมมีคําสั่ง new โดยตรงในการสราง object
แตเมื่อโปรแกรม applet เริม่ ตนทํางาน super-class ของโปรแกรมที่เขียนขึ้นจะสราง object ของ
โปรแกรมโดยอัตโนมัติ และเริ่มประมวลผล
2. Initialisation method init() จะถูกเรียกประมวลผลโดยอัตโนมัติ เชนเดียวกับ constructor
stage ในการเขียนโปรแกรมโดยทั่วไป ถาไมมีการเปลี่ยนแปลงคาตัวแปร หรือ ผานคาตัวแปรจาก
HTML แลว ก็ไมมีความจําเปนที่จะตองเขียนชุดคําสั่งใดๆ ใน method นี้ แตถาตองการผานคา
จาก HTML หรือมีการกําหนดคาเริ่มตนบางรายการ สราง object การกําหนดสี background
หรือ load รูปภาพหรือตัวอักษร ซึ่งงานเหลานี้จะทําเพียงครั้งเดียวเมื่อ applet ถูกเรียกประมวล
ผล ดังนัน้ งานอะไรก็ตามที่ตองการทําเพียงครั้งเดียวควรเขียนใน method init()
3. Starting งานทีต่ องทําตอจาก init() และเปนงานที่ตองการทําซํ้า โดยเฉพาะงานดานภาพ
เคลือ่ นไหว หรือรอกิจกรรมโตตอบจากผูใชบริการ
4. Stopping เมื่อ applet ไมอยูในสภาพที่จะมองเห็น หรือไปประมวลผลที่ background งานตางๆ
ทีต่ องทําในขั้นตอน start() สามารถที่จะหยุดไดชั่วคราว จนกวา applet กลับมา run ใหม ก็จะ
เรียก start() กลับมาทํางานอีกรอบ
5. Destroying เมือ่ ผูใชไมตองการประมวลผล applet นัน้ ๆ อีกตอไป โปรแกรมควรมีการคืน
resource ตางๆ ในกับระบบ
6. paint() เปน method ทีแ่ สดงผลทางจอภาพ ซึ่ง applet จะเรียกประมวลผลโดยอัตโนมัติ ในการ
เขียนโปรแกรมทั่วๆ ไป ผูเขียนจะไมเรียก method paint() โดยตรง หากมีความจําเปนตองเปลี่ยน
แปลงขอมูลบนจอภาพ การเขียนโปรแกรมจะตองเรียกประมวลผลผาน method repaint() หรือ
update()
ตัวอยาง
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
2/2545 2
CS313: Object-Oriented Programming บทที่ 9: Applet
ตัวอยาง (ตอ)
add(messageAction);
add(messageStop);
add(messageDestroy);
add(pressButton);
pressButton.addActionListener(this);
}
ทดลอง run โปรแกรมนี้โดยใช appletviewer แลวลอง minimize, restore และ maximize window
ของโปรแกรมนี้ สังเกตการเปลี่ยนแปลง และทดลอง run โปรแกรมนี้ดวย browser อืน่ ๆ จะเห็นวาบาง
browser ไมไดใหผลเหมือนกัน
2/2545 3
CS313: Object-Oriented Programming บทที่ 9: Applet
1. พิจารณา class ทีจ่ ะนํามาใชงานเปน class member หรือ instance member หากเปนการใช
งาน instance member จะตองมีการสราง object ดวยคําสั่ง new เพือ่ ที่จะไดเรียกใช method
ตางๆ ได ซึ่งการสราง object เหลานี้ จะปรากฎบนจอภาพได ก็ตอเมื่อใชคําสั่ง add() เพื่อเพิ่ม
object เขาไปใน container ซึง่ เปนพื้นที่ที่ใชในการแสดง object ตางๆ ของ applet กอน
2. ตองคํานึงถึงภาพลักษณที่จะปรากฏบนจอภาพ วาจะใหอยูในรูปแบบใด
3. object ทีจ่ ะสรางขึ้น จะใหอยูในชวงชีวิตใดของ Applet
4. การประมวลผลที่ตองการให object ติดตอกับผูใชเปนแบบใด วิธีที่งายที่สุดคือ เรียกใช method
actionPerformed() ซึง่ เปน method ของ class แบบ interface ชื่อ ActionListener ดังนั้นตอง
ประยุกตใชแบบ implements โดยตอทาย extends Applet ในสวนของการประกาศ class
Component คือ object ทีป่ รากฏอยูบนหนาจอ window เชน ปุม (button) สวนสําหรับแสดงขอ
ความ (label) ในการสราง component ประกอบไปดวย 2 ขั้นตอนหลัก คือ
1. สราง object ของ component ทีต่ องการ
2. เพิ่ม object ทีถ่ กู สราง ลงในสวนของ container ดวยคําสั่ง add() ( add() เปน method ใน
class Container ซึง่ จัดเปน Applet ประเภทหนึ่ง )
ในสวนของการเพิ่ม object ทีต่ อ งการใหปรากฏใน container เมือ่ เริ่มโปรแกรม ควรทําใน method init
() ซึง่ เปนสวนที่ Applet จะเริม่ ตนทํางาน หากมีการตอบสนองตอผูใช ใหทําการกําหนดขั้นตอนการประมวล
ผลในสวนของ Listener และตอง overload method actionPerformed() ดังเชนตัวอยางที่ผานมา
9.4 การเปลี่ยนแปลงรูปแบบบนจอภาพ
- void setForeground(Color c)
การกําหนดสีพื้นหนา เชน setForeground(Color.red) เปนการกําหนดสีพื้นหนาเปนสีแดง
- void setBackground(Color c)
กําหนดสีพื้นหลัง เชน setBackground(Color.white) เปนการกําหนดสีพื้นหลังเปนสีขาว
- void setFont(Font f)
เปนการกําหนดรูปแบบและขนาดตัวอักษร เชน กําหนดตัวอักษรแบบ TimesRoman ตัวหนา
ขนาด 24 point สามารถเขียนไดเปน setFont(new Font(“TimesRoman”,Font.BOLD,24);
- void setLocation(int x, int y)
2/2545 4
CS313: Object-Oriented Programming บทที่ 9: Applet
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
2/2545 5
CS313: Object-Oriented Programming บทที่ 9: Applet
ตัวอยาง (ตอ)
public void actionPerformed(ActionEvent e) {
System.out.println(e);
System.out.println(e.getActionCommand());
if (e.getActionCommand().equals(“Red”))
textColor = Color.red;
else if (e.getActionCommand().equals(“Blue”))
textColor = Color.blue;
else if (e.getActionCommand().equals(“Green”))
textColor = Color.green;
else if (e.getActionCommand().equals(“Bigger Font”))
fontSize += 5;
else if (e.getActionCommand().equals(“Smaller Font”))
fontSize -= 5;
repaint();
}
}
2/2545 6
CS313: Object-Oriented Programming บทที่ 9: Applet
ตัวอยาง (ตอ)
lb2.setFont(font1);
lb2.setLocation(20, 40);
add(lb2);
add(txt1);
lb3.setFont(font1);
lb3.setLocation(20, 60);
add(lb3);
add(txt2);
add(calculate);
calculate.setBounds(20,250,80,25);
add(reset);
calculate.addActionListener(this);
reset.addActionListener(this);
txt2.requestFocus();
}
9.6 การแสดงรูปและเสียง
การอานและแสดงรูปภาพที่ Applet
1. คําสั่งในการอานแฟมขอมูลรูปภาพ
ตัวอยาง Image the_picture = getImage(getCodeBase(), “image/word1.gif”);
getCodeBase() เปน method ที่ return คาตําแหนงของแฟมขอมูล และสรางเปน URL
(Universal Resource Location) เพือ่ อานแฟมขอมูลที่ตองการ
2. แสดงแฟมขอมูลรูปภาพที่จอของ Applet โดยใช method drawImage และสั่งประมวลผลที่
method paint โดยผาน class Graphics ดังนี้
2/2545 7
CS313: Object-Oriented Programming บทที่ 9: Applet
การใสเสียงใน Applet
ไฟลเสียงที่สามารถใชงานได ตองมีรูปแบบขอมูลเปน .au เทานั้น ไฟลเสียงจะมี class เปน
AudioClip และ method ในการประมวลผลเสียงประกอบดวย
void loop() : ใหเลนแฟมขอมูลเสียงโดยไมมีการหยุด
void play() : เริม่ เลนแฟมขอมูลเสียง และจะเลนเพียงครั้งเดียว
void stop() : หยุดเลน
ชุดคําสั่งในการอานและประมวลผลแฟมขอมูลเสียงมีดังนี้
1. อานแฟมขอมูลเสียง
AudioClip getAudioClip(URL)
AudioClip getAudioClip(URL, string)
เชน AudioClip aClip = getAudioClip(getCodeBase(),”sound.au”);
2. การสั่งประมวลผลใหเลนเสียง
void play(URL)
void play(URL, string)
เชน aClip.play();
2/2545 8
CS313: Object-Oriented Programming บทที่ 9: Applet
<HTML>
<BODY>
<APPLET CODE=”SampleApplet2.class”>
<PARAM NAME = font VALUE=”36”>
<PARAM NAME = color VALUE=”red”>
</APPLET>
</BODY>
</HTML>
2/2545 9