Bài giảng Nhập môn lập trình Java - Bài 5: Applet - Võ Tấn Dũng

pdf 35 trang ngocly 2990
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn lập trình Java - Bài 5: Applet - Võ Tấn Dũng", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_nhap_mon_lap_trinh_java_bai_5_applet_vo_tan_dung.pdf

Nội dung text: Bài giảng Nhập môn lập trình Java - Bài 5: Applet - Võ Tấn Dũng

  1. TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM NHẬP MÔN JAVA BÀI 5 APPLET GIẢNG VIÊN: VÕ TẤN DŨNG
  2. NỘI DUNG TRÌNH BÀY • Tạo các applet • Đối tượng đồ hoạ Graphics • Kĩ thuật khung hình phụ 2 GV: Võ Tấn Dũng
  3. PHẦN 1 TẠO CÁC APPLET GV: Võ GV: Võ Tấn Dũng
  4. MỘT SỐ METHOD CỦA COMPONENT – void setVisible(boolean):hiển thị hoặc ẩn component – Dimension getSize(): trả về kích thước của component – void setSize(Dimension): thay đổi kích thước – void setEnabled(): “bật” hoặc “tắt” component – void repaint(): cập nhật lại component – void update(Graphics g): được gọi qua repaint() – void paint(Graphics g): được gọi qua update() – void setBackground(Color): đặt màu nền – 4 GV: Võ Tấn Dũng
  5. XÂY DỰNG CÁC APPLET • Lớp Applet – Java có lớp java.applet.Applet kế thừa từ lớp java.awt.Component cho phép tạo ra các applet trong Web. – Mọi lớp applet do người dùng tạo ra đều phải kế thừa từ lớp Applet. 5 GV: Võ Tấn Dũng
  6. XÂY DỰNG CÁC APPLET • Ví dụ 1: Tạo file TestApplet.java import java.applet.Applet; import java.awt.Graphics; public class TestApplet extends Applet { public void paint(Graphics g) { g.drawString(“Helloworld!”, 50, 25); } } • Dịch: javac TestApplet.java 6 GV: Võ Tấn Dũng
  7. XÂY DỰNG CÁC APPLET • Thực thi applet – Cách 1: Tạo file TestApplet.html có nội dung như sau: – Mở file này bằng trình duyệt WEB – Cách 2: Dùng công cụ appletviewer. – Gõ lệnh: appletviewerTestApplet.htmlT> 7 GV: Võ Tấn Dũng
  8. KHUNG CỦA MỘT APPLET CƠ BẢN import java.applet.Applet; import java.awt.Graphics; public class TestApplet extends Applet { public void init() { } public void start() { } public void stop() { } public void destroy { } public void paint(Graphics g) { } } 8 GV: Võ Tấn Dũng
  9. HOẠT ĐỘNG CỦA APPLET • init(): khởi tạo applet • start(): applet bắt đầu hoạt động • stop(): applet chấm dứt hoạt động • destroy(): giải phóng applet • Chú ý: – paint() không phải là phương thức của Applet mà là của Component. – paint() được gọi mỗi khi cửa sổ được vẽ lại. 9 GV: Võ Tấn Dũng
  10. HOẠT ĐỘNG CỦA MỘT APPLET Vòng đời của một Applet – Nạp một applet: applet được khởi tạo và thực thi – Chuyển hoặc trở về trang Web: Các phương thức stop và start sẽ được gọi – Nạp lại applet: như quá trình nạp applet – Thoát khỏi trình duyệt: phương thức stop và destroy sẽ được gọi 10 GV: Võ Tấn Dũng
  11. PHẦN 2 LỚP GRAPHICS GV: Võ GV: Võ Tấn Dũng
  12. LỚP GRAPHICS • java.awt.Graphics là lớp cung cấp các phương thức vẽ đồ hoạ cơ bản: – Đường thẳng (Line) – Đường oval (Oval) – Hình chữ nhật (Rectangle) – Đa giác (Polygon) – Văn bản(Text) – Hình ảnh (Image) – 12 GV: Võ Tấn Dũng
  13. LỚP GRAPHICS • Hệ tọa độ 13 GV: Võ Tấn Dũng
  14. LỚP GRAPHICS • Vẽ đường thẳng – public void drawLine(int x1, int y1, int x2, int y2); • Vẽ hình chữ nhật – public void drawRect(int x, int y, int width, int height); • Tô một hình chữ nhật – public void fillRect(int x, int y, int width, int height); • Xoá một vùng chữ nhật – public void clearRect(int x, int y, int width, int height); • Vẽ đa giác – public void drawPolygon(int[] x, int[] y, int numPoint); – public void drawPolygon(Polygon p); 14 GV: Võ Tấn Dũng
  15. LỚP GRAPHICS import java.applet.Applet; import java.awt.Graphics; public class DemoRect extends Applet { public void init() { System.out.println("Demonstration of some simple figures"); } public void paint(Graphics g) { g.drawLine(70, 300, 400, 250); g.drawRect(100, 50, 130, 170); g.fillRect(120, 70, 70, 70); int[] x = { 280, 310, 330, 430, 370 }; int[] y = { 280, 140, 170, 70, 90 }; g.drawPolygon(x, y, x.length); } } 15 GV: Võ Tấn Dũng
  16. LỚP GRAPHICS 16 GV: Võ Tấn Dũng
  17. LỚP GRAPHICS • Vẽ đường tròn/elip – public void drawOval(int x, int y, int width, int height); • Tô đường tròn/elip – public void fillOval(int x, int y, int width, int height); • Vẽ cung tròn – public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle); • Vẽ xâu kí tự – public void drawString(String str, int x, int y); • Vẽ ảnh – public void drawImage(Image img, int x, int y, ); 17 GV: Võ Tấn Dũng
  18. LỚP GRAPHICS import java.applet.Applet; import java.awt.Graphics; public class DemoOval extends Applet { public void init() { System.out.println("Demonstration of some simple figures"); } public void paint(Graphics g) { int xstart = 70, ystart = 40, size = 100; g.drawOval(xstart, ystart, size, size); g.drawOval(xstart + (size*3)/4, ystart, size, size); g.drawOval(xstart + size/2, ystart + size/2, size, size); g.drawArc(xstart, ystart, 300, 200, 0, -90); g.drawString("good morning !", xstart + 265, ystart + 90); } } 18 GV: Võ Tấn Dũng
  19. LỚP GRAPHICS 19 GV: Võ Tấn Dũng
  20. LỚP GRAPHICS import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; public classDemoImage extends Applet { public void init() { System.out.println("Demonstration of imaging"); } public void paint(Graphics g) { Image image = getToolkit().getImage("summer.jpg"); g.drawImage(image, 0, 0, this); } } 20 GV: Võ Tấn Dũng
  21. LỚP GRAPHICS 21 GV: Võ Tấn Dũng
  22. CÁC LỚP TIỆN ÍCH KHÁC • LớpPoint: biểu diễn điểm trên màn hình • Lớp Dimension: biểu diễn kích thước về chiều rộng và chiều cao của một đối tượng • Lớp Rectangle: biểu diễn hình chữ nhật • Lớp Polygon: biểu diễn đa giác • Lớp Color: biểu diễn màu sắc 22 GV: Võ Tấn Dũng
  23. CÁC LỚP TIỆN ÍCH KHÁC import java.applet.Applet; import java.awt.*; public class DemoColor extends Applet { public void paint(Graphics g) { Dimension size = getSize(); g.setColor(Color.orange); g.fillRect(0, 0, size.width, size.height); Color color = new Color(10, 150, 20); g.setColor(color); g.drawString("I am a colorful string", size.width/2 -50, size.height/2); } } 23 GV: Võ Tấn Dũng
  24. CÁC LỚP TIỆN ÍCH KHÁC 24 GV: Võ Tấn Dũng
  25. XỬ LÝ FONT VẼ import java.applet.Applet; import java.awt.*; public class DemoFont extends Applet { public void paint(Graphics g) { Font font = newFont("Arial", Font.BOLD, 30); g.setFont(font); g.drawString("I am font Arial, bold, size 30", 50, 50); } } 25 GV: Võ Tấn Dũng
  26. PHẦN 3 KỸ THUẬT KHUNG HÌNH PHỤ GV: Võ GV: Võ Tấn Dũng
  27. KỸ THUẬT KHUNG HÌNH PHỤ • Ví dụ về sự di chuyển “bị nháy” import java.applet.Applet; import java.awt.*; public class DemoMove1 extends Applet { private int x = 50; private int y = 50; public void paint(Graphics g) { if(x > 300) x = 50; g.fillOval(x, y, 100, 100); delay(100); move(); } //xem tiếp ở slide tiếp theo 27 GV: Võ Tấn Dũng
  28. KỸ THUẬT KHUNG HÌNH PHỤ • Ví dụ về sự di chuyển “bị nháy” public void delay(int milisecond) { try{ Thread.sleep(milisecond); } catch(Exception e) { } } public void move() { x += 5; repaint(); // ve lai cua so } } 28 GV: Võ Tấn Dũng
  29. KỸ THUẬT KHUNG HÌNH PHỤ • Giải thích lý do nháy: – Mỗi lần gọi repaint() thì update() được gọi – update() xoá nội dung cửa sổvà gọi paint() • Khắc phục: – Vẽ hình vào một khung hình phụ trong bộ nhớ thay vì vẽ trực tiếp ra màn hình. – Khi vẽ xong, khung hình phụ được hiển thị ra màn hình trong phương thức paint(). – Nạp chồng update() để tránh việc xoá nội dung cửa sổ. 29 GV: Võ Tấn Dũng
  30. KỸ THUẬT KHUNG HÌNH PHỤ • Giải pháp // public class DemoMove2 extends Applet { // private Image offImage; private Graphics offGraphics; public void init() { // tao khung hinh phu offImage = createImage(500, 500); // lay doi tuong do hoa de ve vao khung hinh phu offGraphics = offImage.getGraphics(); } //xem tiếp ở slide tiếp theo 30 GV: Võ Tấn Dũng
  31. KỸ THUẬT KHUNG HÌNH PHỤ • Giải pháp public void paint(Graphics g) { // offGraphics.clearRect(0, 0, 500, 500); offGraphics.fillOval(x, y, 100, 100); g.drawImage(offImage, 0, 0, this); // } public voidu pdate(Graphics g) { paint(g); } // } 31 GV: Võ Tấn Dũng
  32. APPLET • Khả năng của Applet – Applet được đặt tại một Server trên mạng – Applet được chuyển tới máy Client theo một trang HTML nào đó – Khi một trình duyệt (tương thích với Java) nhận được trang web này, nó sẽ tải mã của Applet và thực thi trên máy client 32 GV: Võ Tấn Dũng
  33. APPLET • Giới hạn của Applet – Không được nạp các thư viện hay các phương thức sử dụng mã gốc(native code). – Không được đọc và ghi lên các tập tin của máy đang chạy chúng. – Không được khởi động bất kỳ chương trình nào trên máy đang chạy. – Không được đọc bất kỳ tính chất nào của hệ thống 33 GV: Võ Tấn Dũng
  34. BÀI TẬP 1. Dùng kĩ thuật khung hình phụ để vẽ một quả bóng chuyển động tự do trong một applet. 2. Mở rộng bài toán với 2 quả bóng. 3. Mở rộng bài toán với nền applet là một hình ảnh. 4. Mở rộng bài toán với quả bóng là một hình ảnh và có nhiều quả bóng chuyển động đồng thời. 34 GV: Võ Tấn Dũng
  35. HẾT BÀI 5 GV: Võ Tấn Dũng