มูลนิธิ Java Applet
มูลนิธิ Java Applet
แอปเพล็เป็นโปรแกรม Java มันมักจะทำงานในเว็บเบราเซอร์ที่ใช้ Java เพราะมันมีการสนับสนุนอย่างเต็มที่สำหรับ Java API เพื่อให้แอปเพล็เป็นการใช้งานเต็มรูปแบบ Java
ด้านล่างนี้เป็นความแตกต่างที่สำคัญระหว่างโปรแกรม Java และแอปเพล็โปรแกรมสแตนด์อะโลน:
- คลาสจาวาแอปเพล็สืบทอด java.applet.Applet ชั้นเรียน
- ระดับ Applet ไม่ได้กำหนดหลัก () ดังนั้นโปรแกรมไม่เรียก Applet () หลักวิธี
- แอปเพล็ถูกออกแบบมาให้ฝังอยู่ในหน้าเว็บ HTML
- เมื่อผู้ใช้เรียกดูเพจ HTML ที่มีแอปเพล็รหัส Applet ถูกดาวน์โหลดไปยังเครื่องของผู้ใช้
- การดูแอปเพล็ JVM ความต้องการ JVM สามารถเป็น plug-in ที่เว็บเบราเซอร์หรือสภาพแวดล้อมรันไทม์ที่แยกต่างหาก
- เครื่องของผู้ใช้ JVM เพื่อสร้างตัวอย่างของการเรียนแอปเพล็และเรียกวงจรชีวิต Applet ของวิธีการต่างๆ
- แอปเพล็มีกฎระเบียบที่เข้มงวดการรักษาความปลอดภัยแอปเพล็เว็บเบราเซอร์การรักษาความปลอดภัยบังคับใช้ที่เรียกว่าการรักษาความปลอดภัย Sandbox
- แอปเพล็แบบฟอร์มต้องชั้นเรียนอื่น ๆ สามารถใช้ (JAR) ไฟล์จาวาคลังข้อมูลจะถูกดาวน์โหลด
วงจรชีวิต Applet
ระดับ Applet ให้สี่วิธีการให้กรอบที่คุณสามารถจะอยู่ในกรอบการทำงานสำหรับการพัฒนาโปรแกรมขนาดเล็ก:
- init: วัตถุประสงค์ของวิธีนี้คือการให้การเริ่มต้นใด ๆ ที่จำเป็นสำหรับแอปเพล็ของคุณ วิธีการนี้เรียกว่าหลังแท็กแท็กพระราม Applet มีการประมวลผล
- เริ่มต้น: เบราว์เซอร์เรียกวิธี init ซึ่งถูกเรียกโดยอัตโนมัติ เมื่อใดก็ตามที่ผู้ใช้ส่งกลับไปยังหน้าจากหน้าอื่น ๆ ที่มี Applet แล้วเรียกวิธี
- หยุด: เมื่อผู้ใช้ถูกลบออกจากหน้าเว็บที่มีแอปเพล็วิธีการที่เรียกว่าโดยอัตโนมัติ ดังนั้นวิธีนี้สามารถเรียกซ้ำ ๆ ในแอปเพล็เดียวกัน
- ทำลาย: วิธีการนี้เรียกว่าเฉพาะเมื่อเบราว์เซอร์ที่มีการปิดตัวลงอย่างสง่างาม เพราะแอปเพล็หลังจากนั้นเพียงที่ถูกต้องในหน้า HTML ดังนั้นคุณจึงไม่ควรจะอยู่ในผู้ใช้ออกจากเพจที่มีแอปเพล็พลาดทรัพยากรใด ๆ
- สี: วิธีการนี้เรียกว่าทันทีหลังจากที่เริ่มต้น () วิธีการหรือแอปเพล็ความต้องการที่จะวาดเมื่อสายเบราว์เซอร์ สี () วิธีการรับมรดกจริงจาก java.awt
"สวัสดีโลก" Applet:
นี่คือ HelloWorldApplet.java โปรแกรม Applet ง่าย:
import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void paint (Graphics g) { g.drawString ("Hello World", 25, 50); } }
งบเหล่านี้นำเข้าชั้นเรียนต่อไปนี้ในระดับแอปเพล็ของเรา:
java.applet.Applet. java.awt.Graphics.
โดยไม่ต้องนำเข้างบเหล่านี้ Java คอมไพเลอร์จะไม่รับรู้ Applet และกราฟิกชั้นเรียน
ระดับ Applet
แต่ละประเภทรองของการเรียนแอปเพล็ Applet เป็นชั้นฐาน java.applet.Applet ให้วิธีการที่ได้มาสายชั้นเรียนเพื่อให้ได้ข้อมูลและบริการบริบทเบราว์เซอร์
วิธีการเหล่านี้ทำสิ่งต่อไปนี้:
- รับพารามิเตอร์แอปเพล็
- ได้รับตำแหน่งบนเครือข่ายที่มีแอปเพล็ไฟล์ HTML ของ
- ได้รับตำแหน่งไดเรกทอรีระดับแอปเพล็เครือข่าย
- ข้อมูลสถานะพิมพ์เบราว์เซอร์
- ได้รับภาพ
- ได้รับคลิปเสียง
- เล่นคลิปเสียง
- ปรับขนาดแอปเพล็
นอกจากนี้ระดับ Applet นอกจากนี้ยังมีอินเตอร์เฟซที่แอปเพล็ Viewer หรือเบราว์เซอร์ที่จะได้รับข้อมูลและการควบคุมการดำเนินการของแอปเพล็ ๆ
ผู้ชมอาจจะเป็น:
- ผู้เขียนขอใช้บริการแอปเพล็, รุ่นและข้อมูลเกี่ยวกับลิขสิทธิ์
- คำอธิบายที่ขอบัตรประจำตัวแอปเพล็พารามิเตอร์
- แอปเพล็เริ่มต้น
- แอปเพล็ทำลาย
- เริ่มต้นแอปเพล็
- End แอปเพล็การดำเนินการ
ระดับ Applet ให้เริ่มต้นใช้งานวิธีการเหล่านี้วิธีการเหล่านี้สามารถแทนที่เมื่อมีความจำเป็น
"สวัสดีโลก" แอปเพล็นี้จัดทำขึ้นตามมาตรฐานการ วิธีเดียวที่จะถูกแทนที่วิธีการสี
โทร Applet
แอปเพล็เป็นโปรแกรม Java มันมักจะทำงานในเว็บเบราเซอร์ที่ใช้ Java เพราะมันมีการสนับสนุนอย่างเต็มที่สำหรับ Java API เพื่อให้แอปเพล็เป็นการใช้งานเต็มรูปแบบ Java
<Applet> แท็กแอปเพล็ตามที่ฝังอยู่ในไฟล์ HTML ต่อไปนี้คือเรียกร้องให้ "Hello World" ตัวอย่างเช่นแอปเพล็;
<html> <title>The Hello, World Applet</title> <hr> <applet code="HelloWorldApplet.class" width="320" height="120"> If your browser was Java-enabled, a "Hello, World" message would appear here. </applet> <hr> </html>
หมายเหตุ: คุณสามารถอ้างถึงแท็ก Applet ที่จะเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการเรียกแอปเพล็จาก HTML
คุณสมบัติ <แอปเพล็> แท็กระบุระดับ Applet ในการทำงาน ความกว้างและความสูงที่ใช้ในการระบุขนาดเริ่มต้นของแอปเพล็ในการทำงานแผง แอปเพล็ต้องใช้ </ แอปเพล็> แท็กจะปิด
หากแอปเพล็ยอมรับพารามิเตอร์แล้วค่าของพารามิเตอร์ที่จำเป็น เพิ่มแท็กแท็กจะอยู่ใน <แอปเพล็> และ </ แอปเพล็> ระหว่าง เบราว์เซอร์ละเว้นข้อความและค่ายอื่น ๆ แท็กแอปเพล็
ไม่สนับสนุนเบราว์เซอร์ Java ไม่สามารถรัน <แอปเพล็> และ </ แอปเพล็> ดังนั้นระหว่างป้ายชื่อและความสัมพันธ์ของจอแสดงผลแอปเพล็และไม่มีอะไรโดยการสนับสนุนของเบราว์เซอร์ Java มันจะมองเห็นได้
Viewer หรือเบราว์เซอร์เพื่อหาสถานที่ในเอกสารที่รวบรวมรหัส Java เพื่อระบุเส้นทางเอกสารต้องใช้ <แอปเพล็> แอตทริบิวต์ codebase ระบุแท็ก
ดังต่อไปนี้:
<applet codebase="http://amrood.com/applets" code="HelloWorldApplet.class" width="320" height="120">
หากแอปเพล็ที่แพคเกจแทนของแพคเกจเริ่มต้นแพคเกจจะต้องระบุในรหัสที่ทรัพย์สินที่ยกตัวอย่างเช่น:
<applet code="mypackage.subpackage.TestApplet.class" width="320" height="120">
รับแอปเพล็พารามิเตอร์
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการใช้การตอบสนองแอปเพล็การตั้งค่าพารามิเตอร์ที่กำหนดไว้ในแฟ้ม แอปเพล็แสดงให้เห็นถึงรูปแบบกระดานหมากรุกสีดำและสีที่สอง
สีที่สองและขนาดของแต่ละคอลัมน์ที่ระบุโดยพารามิเตอร์ของแอปเพล็ในเอกสาร
CheckerApplet รับพารามิเตอร์ใน init () วิธีการภายใน นอกจากนี้คุณยังจะได้รับพารามิเตอร์ในสี () วิธีการภายใน อย่างไรก็ตามในแอปเพล็เริ่มได้รับความคุ้มค่าและบันทึกการตั้งค่ามากกว่าเมื่อพวกเขาจะสดชื่นทุกครั้งที่ได้รับค่าจึงเป็นสิ่งที่สะดวกและมีประสิทธิภาพ
โปรแกรมดูแอปเพล็หรือเบราว์เซอร์เมื่อแอปเพล็ทำงานแต่ละสาย init () วิธีการ หลังจากโหลดแอปเพล็, Viewer ทันทีโทร init () วิธีการ (Applet.init () ไม่ได้ทำอะไร) แทนที่การใช้งานเริ่มต้นของวิธีการนี้เพิ่มรหัสเริ่มต้นที่กำหนดเอง
Applet.getParameter () วิธีการที่จะได้รับตามค่าพารามิเตอร์ชื่อพารามิเตอร์ที่ได้รับ ถ้าค่าที่ได้รับเป็นตัวเลขหรือข้อมูลที่ไม่ใช่ตัวละครอื่น ๆ ที่คุณต้องแก้ไขประเภทสตริง
ตัวอย่างต่อไปนี้ CheckerApplet.java เรื่องย่อ:
import java.applet.*; import java.awt.*; public class CheckerApplet extends Applet { int squareSize = 50;// 初始化默认大小 public void init () {} private void parseSquareSize (String param) {} private Color parseColor (String param) {} public void paint (Graphics g) {} }
นี่คือ CheckerApplet ระดับ init () วิธีการและ parseSquareSize ส่วนตัว () วิธีการ:
public void init () { String squareSizeParam = getParameter ("squareSize"); parseSquareSize (squareSizeParam); String colorParam = getParameter ("color"); Color fg = parseColor (colorParam); setBackground (Color.black); setForeground (fg); } private void parseSquareSize (String param) { if (param == null) return; try { squareSize = Integer.parseInt (param); } catch (Exception e) { // 保留默认值 } }
parseSquareSize แอปเพล็โทร () ในการแก้พารามิเตอร์ squareSize parseSquareSize () วิธีการเรียกจำนวนเต็มห้องสมุด. parseInt () ซึ่งจะแยกสตริงเพื่อจำนวนเต็มเมื่อพารามิเตอร์ไม่ถูกต้องเมื่อ Integer.parseInt () พ่นข้อยกเว้น
ดังนั้น parseSquareSize () วิธีการนี้ยังจับข้อยกเว้นและแอปเพล็ที่ไม่ได้รับอนุญาตให้รับข้อมูลที่ไม่ถูกต้อง
Applet โทร parseColor () วิธีการพารามิเตอร์สีมีมติให้ค่าสี parseColor () วิธีการที่ได้มาเปรียบเทียบชุดของสตริงเพื่อให้ตรงกับค่าของพารามิเตอร์และชื่อสีที่กำหนดไว้ล่วงหน้า คุณจำเป็นต้องใช้วิธีการเหล่านี้จะทำให้การทำงานของแอปเพล็
ระบุพารามิเตอร์แอปเพล็
ตัวอย่างต่อไปนี้เป็นไฟล์ HTML ที่ฝังระดับ CheckerApplet ไฟล์ HTML โดยใช้ วิธีการแท็ก applet เพื่อระบุสองพารามิเตอร์
<html> <title>Checkerboard Applet</title> <hr> <applet code="CheckerApplet.class" width="480" height="320"> <param name="color" value="blue"> <param name="squaresize" value="30"> </applet> <hr> </html>
หมายเหตุ: ชื่อพารามิเตอร์ไม่ได้กรณีที่สำคัญ
การประยุกต์ใช้งานเข้า Applet
โปรแกรม Java กราฟิก (หมายถึงการใช้ AWT ใบสมัครและการใช้งานโปรแกรม Java โปรแกรมปล่อย) ลงฝังอยู่ในหน้าเว็บที่แอปเพล็ง่ายมาก
ต่อไปนี้ไม่กี่ขั้นตอนการแปลงแอพลิเคชันเป็นแอปเพล็:
- เขียนเพจ HTML ที่สามารถโหลดได้ด้วยรหัสแท็กแอปเพล็
- เขียนเป็น subclass Japplet ชั้นมีการตั้งค่าให้กับประชาชน มิฉะนั้นแอปเพล็ไม่สามารถโหลดได้
- กำจัดการประยุกต์ใช้หลัก () วิธีการ อย่าสร้างกรอบการทำงานสำหรับหน้าต่างโปรแกรมเพราะใบสมัครของคุณจะแสดงในเบราว์เซอร์
- กรอบหน้าต่างแอปพลิเคคอนสตรัคที่รหัสการเริ่มต้นที่จะ init แอพเพล็ต () method วัตถุการตั้งค่าแอปเพล็คุณไม่แสดงเบราว์เซอร์โดยการเรียก init () วิธีการ instantiate วัตถุ
- นำการเรียกร้องให้ setSize () วิธีการแอปเพล็เป็นห่วงขนาดที่ได้รับการจัดตั้งขึ้นโดยไฟล์ HTML ในความกว้างและความสูงพารามิเตอร์
- นำการเรียกร้องให้ setDefaultCloseOperation () วิธีการ Applet ไม่สามารถปิดได้ตามที่มันออกจากเบราว์เซอร์ถูกยกเลิก
- หากโปรแกรมประยุกต์ที่เรียก setTitle () วิธีการกำจัดของเรียกวิธีการนี้ แอปเพล็ไม่สามารถมีแถบชื่อเรื่อง (แน่นอนคุณสามารถให้ผ่านแท็กชื่อ HTML สำหรับหน้าตัวเองเป็นชื่อ)
- อย่าเรียก setVisible (จริง), แอปเพล็จะปรากฏโดยอัตโนมัติ
การประมวลเหตุการณ์
ระดับ Applet สืบทอดจำนวนของวิธีการจัดการเหตุการณ์จากชั้นตู้คอนเทนเนอร์ ระดับคอนเทนเนอร์กำหนดวิธีการหลายวิธีเช่น: processKeyEvent () และ processMouseEvent () การจัดการประเภทโดยเฉพาะอย่างยิ่งของเหตุการณ์มีวิธีการจับภาพเหตุการณ์ทั้งหมดที่เรียกว่า processEvent
ในการตอบสนองต่อเหตุการณ์แอปเพล็ต้องแทนที่วิธีการจัดการเหตุการณ์ที่เหมาะสม
import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.applet.Applet; import java.awt.Graphics; public class ExampleEventHandling extends Applet implements MouseListener { StringBuffer strBuffer; public void init() { addMouseListener(this); strBuffer = new StringBuffer(); addItem("initializing the apple "); } public void start() { addItem("starting the applet "); } public void stop() { addItem("stopping the applet "); } public void destroy() { addItem("unloading the applet"); } void addItem(String word) { System.out.println(word); strBuffer.append(word); repaint(); } public void paint(Graphics g) { //Draw a Rectangle around the applet's display area. g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); //display the string inside the rectangle. g.drawString(strBuffer.toString(), 10, 20); } public void mouseEntered(MouseEvent event) { } public void mouseExited(MouseEvent event) { } public void mousePressed(MouseEvent event) { } public void mouseReleased(MouseEvent event) { } public void mouseClicked(MouseEvent event) { addItem("mouse clicked! "); } }
เรียกแอปเพล็ต่อไปนี้:
<html> <title>Event Handling</title> <hr> <applet code="ExampleEventHandling.class" width="300" height="300"> </applet> <hr> </html>
เริ่มต้นการทำงานมากที่สุดจอแสดงผลแอปเพล็ "การเริ่มต้นแอปเพล็. เริ่มต้นแอปเพล็." และจากนั้นคุณคลิกที่รูปสี่เหลี่ยมผืนผ้าก็จะแสดง "เมาส์คลิก"
แสดงรูปภาพ
แอปเพล็สามารถแสดง GIF, JPEG, BMP และรูปแบบภาพอื่น ๆ เพื่อแสดงภาพในแอปเพล็, คุณจำเป็นต้องใช้ระดับ drawImage () วิธี java.awt.Graphics
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงขั้นตอนทั้งหมดในการแสดงภาพ:
import java.applet.*; import java.awt.*; import java.net.*; public class ImageDemo extends Applet { private Image image; private AppletContext context; public void init() { context = this.getAppletContext(); String imageURL = this.getParameter("image"); if(imageURL == null) { imageURL = "java.jpg"; } try { URL url = new URL(this.getDocumentBase(), imageURL); image = context.getImage(url); }catch(MalformedURLException e) { e.printStackTrace(); // Display in browser status bar context.showStatus("Could not load image!"); } } public void paint(Graphics g) { context.showStatus("Displaying image"); g.drawImage(image, 0, 0, 200, 84, null); g.drawString("www.javalicense.com", 35, 100); } }
เรียกแอปเพล็ต่อไปนี้:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="300" height="200"> <param name="image" value="java.jpg"> </applet> <hr> </html>
เล่นเสียง
Applet ผ่านแพคเกจการใช้งาน java.applet AudioClip เล่นอินเตอร์เฟซเสียง อินเตอร์เฟซ AudioClip กำหนดสามวิธี:
- ประชาชนเล่นเป็นโมฆะ (): จากจุดเริ่มต้นที่ครั้งหนึ่งเคยเล่นนี้คลิปเสียง
- ห่วงโมฆะสาธารณะ (): ห่วงเล่นนี้คลิปเสียง
- โมฆะสาธารณะหยุด (): หยุดคลิปเสียง
เพื่อให้ได้วัตถุ AudioClip คุณต้องเรียก getAudioClip () วิธีการเรียน Applet ไม่ว่าจุด URL ไปยังไฟล์เสียงจริงซึ่งจะทำการแสดงผลทันที
จนกว่าคุณจะต้องการที่จะเล่นไฟล์เสียงไฟล์จะถูกดาวน์โหลด
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงขั้นตอนในการเล่นเสียงทั้งหมด:
import java.applet.*; import java.awt.*; import java.net.*; public class AudioDemo extends Applet { private AudioClip clip; private AppletContext context; public void init() { context = this.getAppletContext(); String audioURL = this.getParameter("audio"); if(audioURL == null) { audioURL = "default.au"; } try { URL url = new URL(this.getDocumentBase(), audioURL); clip = context.getAudioClip(url); }catch(MalformedURLException e) { e.printStackTrace(); context.showStatus("Could not load audio file!"); } } public void start() { if(clip != null) { clip.loop(); } } public void stop() { if(clip != null) { clip.stop(); } } }
แอปเพล็โทรต่อไปนี้:
<html> <title>The ImageDemo applet</title> <hr> <applet code="ImageDemo.class" width="0" height="0"> <param name="audio" value="test.wav"> </applet> <hr>
คุณสามารถใช้ test.wav บนคอมพิวเตอร์ของคุณเพื่อทดสอบตัวอย่างข้างต้น