http://vietjack.com/java/index.jsp Copyright © vietjack.com Cơ Applet Java Một Applet chương trình Java chạy trình duyệt Web Một applet ứng dụng Java đầy đủ tính có tồn Java API cách bố trí Để hiểu sâu khái niệm trình bày chương này, mời bạn tham khảo loạt bài: Ví dụ Applet Java Có số điểm khác quan trọng applet ứng dụng Standalone Java, là: Một applet lớp Java mà kế thừa lớp java.applet.Applet Một phương thức main() không gọi applet, lớp applet không định nghĩa main() Các applet thiết kế để nhúng bên trang HTML Khi người dùng quan sát trang HTML mà chứa applet, code cho applet tải tới thiết bị người sử dụng Một JVM yêu cầu để quan sát applet JVM plugin trình duyệt Web môi trường runtime riêng rẽ JVM thiết bị người dùng tạo instance lớp applet gọi phương thức khác suốt vòng đời applet Các applet có qui tắc bảo mật nghiêm ngặt thi hành trình duyệt Web Sự bảo mật applet thường xem Sandbox Security, so sánh applet đứa trẻ chởi sandbox với qui tắc đa dạng mà phải tuân theo Các lớp khác, mà applet cần, tải file đơn Java Archive (JAR) Vòng đời Applet Java phương thức lớp Applet cung cấp cho bạn Framework, bạn xây dựng applet quan trọng nào: init: Phương thức dự định cho khởi tạo thứ cần thiết cho applet Nó gọi sau thẻ param bên thẻ applet xử lý http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com start: Phương thức tự động gọi sau trình duyệt gọi phương thức init Nó gọi người dùng trả trang mà chứa applet sau rời khỏi trang để tới trang khác stop: Phương thức tự động gọi người dùng rời khỏi trang mà có applet Vì thế, gọi cách lặp lặp lại với applet destroy: Phương thức gọi trình duyệt ngừng theo cách thơng thường Bởi applet sống trang HTML, nên người dùng rời khỏi trang mà chứa applet applet hủy paint: Được gọi sau phương thức start(), gọi applet cần repaint trình duyệt Phương thức paint() thực kế thừa từ java.awt Ví dụ “Hello, World” Applet Java Sau applet đơn giản tên HelloWorldApplet.java: import java.applet.*; import java.awt.*; public class HelloWorldApplet extends Applet { public void paint (Graphics g) { g.drawString ("Hello World", 25, 50); } } Các lệnh import mang lớp vào phạm vi lớp applet chúng ta: java.applet.Applet java.awt.Graphics Khơng có lệnh import này, biên dịch Java không nhận lớp Applet Graphics, mà lớp applet tham chiếu tới http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Lớp Applet Java Mỗi applet kế thừa lớp java.applet.Applet Lớp Applet cung cấp phương thức mà lớp Applet nội suy gọi để thu thông tin dịch vụ từ ngữ cảnh trình duyệt Nó bao gồm phương thức mà thực công việc sau: Nhận tham số applet Nhận vị trí mạng HTML file mà chứa applet Nhận vị trí thư mục lớp applet In thông báo trạng thái (status) trình duyệt Rút (Fetch) hình ảnh Rút (Fetch) audio Play audio Phục hồi kích cỡ (resize) applet Ngồi ra, lớp applet cung cấp interface, trình duyệt thu nhận thông tin applet điều khiển thực thi applet Viewer có thể: u cầu thơng tin author, version copyright applet Yêu cầu mô tả tham số mà applet thừa nhận Khởi tạo applet Hủy applet Bắt đầu thực thi applet Dừng thực thi applet Lớp Applet cung cấp triển khai mặc định phương thức Những triển khai override cần thiết http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Gọi applet Java Một applet gọi việc nhúng thị HTML file quan sát file thông qua applet viewer Java-enabled browser Thẻ sở để nhúng applet HTML file Dưới ví dụ gọi applet "Hello, World": The Hello, World Applet If your browser was Java-enabled, a "Hello, World" message would appear here Ghi chú: Bạn tham khảo Thẻ Applet HTML để hiểu sâu cách gọi Applet từ HTML Thuộc tính code thẻ cần thiết Nó xác định lớp Applet để chạy Hai thuộc tính width heigh cần thiết để xác định kích thước ban đầu applet chạy Chỉ thị applet phải đóng với thẻ Nếu applet nhận tham số, giá trị truyền cho tham số việc thêm thẻ thẻ Trình duyệt bỏ qua text thẻ khác thẻ applet Các trình duyệt non-java-enabled khơng xử lý Vì thế, xuất thẻ này, khơng liên quan tới applet, nhìn thấy trình duyệt Viewer Browser tìm Java code biên dịch vị trí tài liệu Nếu khơng thì, để xác định, sử dụng thuộc tính codebase thẻ sau: http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Nếu applet cư trú gói thay mặc định, gói giữ phải xác định thuộc tính code sử dụng ký tự dấu chấm (.) để phân biệt thành phần package/class Ví dụ: Nhận tham số applet Java Ví dụ sau minh họa cách tạo Applet Respond để thiết lập tham số xác định tài liệu Applet hiển thị checkerboard pattern (dạng bàn cờ) màu đen màu thứ hai Màu thứ hai kích cỡ hình vng xác định tham số tới applet bên tài liệu CheckerApplet nhận tham số phương thức init() Nó nhận tham số phương thức paint() Tuy nhiên, việc nhận giá trị lưu giữ thiết lập lần trạng thái start applet, thay refresh, tiện lợi hiệu Applet Viewer Browser gọi phương thức init() applet chạy Viewer gọi init() lần, sau tải applet (Applet.init() triển khai để khơng làm cả.) Override triển khai mặc định để chèn custom code khởi tạo Phương thức Applet.getParameter() gọi tham số mà cung cấp tên (giá trị tham số luôn chuỗi) Nếu giá trị số liệu khác chuỗi, String phải parse Sau khung CheckerApplet.java: import java.applet.*; import java.awt.*; public class CheckerApplet extends Applet { int squareSize = 50;// initialized to default size public void init () {} private void parseSquareSize (String param) {} private Color parseColor (String param) {} public void paint (Graphics g) {} } http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Đây phương thức init() CheckerApplet phương thức riêng 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) { // Let default value remain } } Applet gọi phương thức parseSquareSize() để parse tham số squareSize Phương thức lại gọi phương thức thư viện Integer.parseInt(), mà parse string trả integer Phương thức Integer.parse() ném exception tham số hết hiệu lực (khơng hợp lệ) Vì thế, phương thức parseSquareSize() bắt exception, cho phép applet thất bại bad input Applet gọi phương thức parseColor() để parse tham số color vào giá trị Color Phương thức thực loạt so sánh chuỗi để so khớp giá trị tham số với tên màu định trước Bạn cần triển khai phương thức để làm applet làm việc http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Xác định tham số applet Java Sau ví dụ HTML file với CheckerApplet nhúng HTML file xác định tham số tới applet thẻ Checkerboard Applet Ghi chú: Tên tham số không phân biệt kiểu chữ Biến đổi ứng dụng thành Applet Java Nó dễ dàng để biến đổi ứng dụng Graphic Java (đó là, ứng dụng mà sử dụng AWT bạn bắt đầu với Java program launcher) thành applet mà bạn nhúng vào trang Web Here are the specific steps for converting an application to an applet Tạo trang HTML với thẻ thích hợp để tải applet code Cung cấp lớp phụ lớp JApplet, làm lớp public Nếu khơng thì, applet khơng thể tải Loại bỏ phương thức main ứng dụng Không xây dựng frame window cho ứng dụng Ứng dụng bạn hiển thị bên trình duyệt Di chuyển code khởi tạo từ Frame window constructor tới phương thức init applet Bạn không cần xây dụng rõ ràng đối tượng applet Trình duyệt khởi tạo cho bạn gọi phương thức init Gỡ bỏ triệu hồi tới setSize; với applet, việc tạo kích thước thực tham số width height HTML file http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Gỡ bỏ triệu hồi tới setDefaultCloseOperation Một applet khơng thể bị đóng; kết thúc trình duyệt Nếu ứng dụng gọi setTitle, loại bỏ triệu hồi tới phương thức Applet khơng thể có Title bar (Tất nhiên bạn tạo tiêu đề cho trang web đó, sử dụng thẻ HTML title.) Đừng gọi phương thức setVisible(true) Applet hiển thị cách tự động Xử lý kiện Java Applet kế thừa nhóm phương thức event-handling từ lớp Container Lớp Container định nghĩa số phương thức, processKeyEvent processMouseEvent, để xử lý kiểu kiện cụ thể, sau phương thức catch-all gọi processEvent Để phản ứng lại kiện, applet phải override phương thức event cụ thể 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 "); } http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com 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) { http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com } public void mouseClicked(MouseEvent event) { addItem("mouse clicked! "); } } Bây giờ, gọi applet sau: Event Handling Ban đầu, applet hiển thị "initializing the applet Starting the applet." Sau đó, bạn click vào bên hình chữ nhật, "mouse clicked" hiển thị Hiển thị hình ảnh Java Một applet hiển thị hình ảnh định dạng GIF, JPEG, BMP, etc Để hiển thị hình ảnh bên applet, bạn sử dụng phương thức drawImage() lớp java.awt.Graphics Ví dụ sau minh họa tất bước để hiển thị hình ảnh Java: import java.applet.*; import java.awt.*; import java.net.*; public class ImageDemo extends Applet { private Image image; private AppletContext context; public void init() { http://vietjack.com/ Trang chia sẻ học online miễn phí Page 10 http://vietjack.com/java/index.jsp Copyright © vietjack.com 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); } } Bây giờ, gọi applet sau: The ImageDemo applet http://vietjack.com/ Trang chia sẻ học online miễn phí Page 11 http://vietjack.com/java/index.jsp Copyright © vietjack.com Play Audio Java Một applet play audio file biểu diễn AudioClip interface gói java.applet AudioClip interface có phương thức, gồm: public void play(): Play audio clip lần từ bắt đầu public void loop(): Làm audio clip replay cách liên tục public void stop(): Dừng play audio clip Để nhận đối tượng AudioClip, bạn phải triệu hồi phương thức getAudioClip() lớp Applet Phương thức getAudioClip() trả lập tức, có hay khơng URL chuyển tới audio file thực Audio file không tải tới cố gắng tạo để play audio clip Following is the example showing all the steps to play an audio: 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); http://vietjack.com/ Trang chia sẻ học online miễn phí Page 12 http://vietjack.com/java/index.jsp Copyright © vietjack.com 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(); } } } Bây giờ, gọi apple sau: The ImageDemo applet http://vietjack.com/ Trang chia sẻ học online miễn phí Page 13 http://vietjack.com/java/index.jsp Copyright © vietjack.com Bạn sử dụng test.wav PC bạn để test ví dụ Để hiểu sâu khái niệm trình bày chương này, mời bạn tham khảo loạt bài: Ví dụ Applet Java http://vietjack.com/ Trang chia sẻ học online miễn phí Page 14 ... gọi applet cần repaint trình duyệt Phương thức paint() thực kế thừa từ java. awt Ví dụ “Hello, World” Applet Java Sau applet đơn giản tên HelloWorldApplet .java: import java .applet. *; import java. awt.*;... chia sẻ học online miễn phí Page http://vietjack.com /java/ index.jsp Copyright © vietjack.com Gọi applet Java Một applet gọi việc nhúng thị HTML file quan sát file thông qua applet viewer Java- enabled... thẻ < /applet> Trình duyệt bỏ qua text thẻ khác thẻ applet Các trình duyệt non -java- enabled khơng xử lý < /applet> Vì thế, xuất thẻ này, khơng liên quan tới applet, nhìn