Chuong 10 - Applet

LẬP TRÌNH JAVA

Nguyễn Thị Thu Trang

[email protected]

Chương 10. Applet

 Tổng quan về Applet

 Chương trình Applet đầu tiên

 Vòng đời của Applet

 Lớp Graphics

 Lớp Color, Font chữ

 Tạo Applet

 ...

1. Tổng quan về Applet

 Applet là chương trình Java được nhúng trong mã nguồn HTML.

 Có thể chạy trên trình duyệt Web có cài JVM (JRE) sau khi tải về.

 Nhờ các applet, trang Web có thêm được sức sống vì applet có thể thể hiện multimedia, tạo được sự tương tác với user như hỏi-trả lời

 Có thể nguy hiểm, không đảm bảo tính an toàn

1. Tổng quan về Applet

 Để có thể chạy applet, trình duyệt của user phải bật chức năng Java Plug-in

1. Tổng quan về Applet

 Để sử dụng gói Applet của Java:

 import java.applet.*;// để sử dụng lớp Applet

 import javax.swing.*;// để sử dụng lớp JApplet

 Đ ể t ạo 1 applet, xây d ựng 1 class con c ủa l ớp Applet ho ặc l ớp JApplet.

 Thư ờng đ ặt tên l ớp applet này trùng tên v ới tên file.html.

Chương 10. Applet

 Tổng quan về Applet

 Chương trình Applet đầu tiên

 Vòng đời của Applet

 Lớp Graphics

 Lớp Color, Font chữ

 Tạo Applet

 ...

2. Chương trình Applet đầu tiên

import java.applet.Applet;

import java.awt.Graphics;

public class FirstApplet extends Applet {

public void paint(Graphics g) {

g.drawString("This is my first applet!", 20, 100);

}

}

Tạo 1 tài liệu HTML chứa applet

 Để thực thi một applet, tạo một tập tin HTML có sử dụng thẻ applet hoặc thẻ object

 Thẻ applet/object có hai thuộc tính:

 Width

 Height

 Để truyền tham số tới applet, sử dụng thẻ 'param', và thuộc tính 'value'

 Ví dụ:

<html>

<applet code="FirstApplet" width=200 height=200>

</applet>

</html>

2. Chương trình Applet đầu tiên (2)

 Kế thừa từ lớp Applet

 Đồ họa từ Abstract Window Toolkit (AWT)

 Chạy sau khi biên dịch:

 Trên cmd: appletviewer FirstApplet.html hoặc

appletviewer FirstApplet.java

 Textpad: Ctrl + 3

Chương 10. Applet

 Tổng quan về Applet

 Chương trình Applet đầu tiên

 Vòng đời của Applet

 Lớp Graphics

 Lớp Color, Font chữ

 Tạo Applet

 ...

3. Vòng đời của Applet

import java.applet.Applet;

import java.awt.Graphics;

/*

<applet code="AppletLifeCycle" width=300 height=50>

</applet>

*/

public class AppletLifeCycle extends Applet {

String str = "";

public void init() {

str += "init; ";

}

public void start() {

str += "start; ";

}

public void stop() {

str += "stop; ";

}

public void destroy() {

System.out.println("destroy");

}

public void paint(Graphics g){

g.drawString(str, 10, 25);

}

}

3. Vòng đời của Applet (2)

 init(): Chỉ được gọi khi applet bắt đầu thực thi

 start(): Được chạy sau init(), được gọi bởi appletviewer hoặc trình duyệt Web.

 stop(): Được chạy khi applet bị thu nhỏ

 destroy(): Được gọi bởi appletviewer hoặc trình duyệt Web khi applet kết thúc.

3. Vòng đời của Applet (3)

 Các phương thức khác:

 paint( )

 repaint( )

 showStatus( )

 getAppletContext()

Ví dụ

import java.applet.Applet;

import java.awt.Graphics;

public class TestApplet extends Applet {

public void paint(Graphics g) {

g.drawString("This is my first applet!",

20, 100);

showStatus("Applet is running!");

g.drawString("Context: " +

getAppletContext(), 20, 120);

}

}

Chương 10. Applet

 Tổng quan về Applet

 Chương trình Applet đầu tiên

 Vòng đời của Applet

 Lớp Graphics

 Lớp Color, Font chữ

 Tạo Applet

 ...

4. Lớp Graphics

import java.applet.Applet;

import java.awt.Graphics;

/*

<applet code="DrawArc" width=200 height=200>

</applet>

*/

pulic class DrawArc extends Applet {

public void paint(Graphics g) {

g.drawArc(20, 20, 160, 160, 0, 135);

}

}

Tham khảo: http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Graphics.html

Các phương thức trong lớp Graphics

 abstract void drawArc(int x, int y, int w, int h, int degreesO, int degrees1)

 abstract boolean drawImage(Image img, int x, int y, ImageObserver io)

 abstract void drawLine(int x0, int y0, int x, int y1)

 abstract void drawOval(int x, int y, int w, int h)

 abstract void drawPolygon(int x[], int u[], int n)

 abstract void drawPolyline(int x[], int y[], int n)

 void drawRect(int x, int y, int w, int h)

 abstract void drawString(String str, int x, int y)

 abstract void fillArc(int x, int y, int w, int h, int degree0, int degree1)

 abstract void fillOval(int x ,int y, int w, int h)

 abstract void fillPolygon(int x[], int y[], int n)

 void fillRect(int x, int y, int w, int h)

 abstract Color getColor()

 abstract Font getFont()

 abstract void setFont(Font f)

 ...

Chương 10. Applet

 Tổng quan về Applet

 Chương trình Applet đầu tiên

 Vòng đời của Applet

 Lớp Graphics

 Lớp Color, Font chữ

 Tạo Applet

 ...

5. Lớp Color

 Phương thức khởi tạo của lớp Color:

 Color(int red, int green, int blue)

 Color(int rgb)

 Color(float r, float g, float b)

 Các phương thức trong lớp Graphics:

 static int HSBtoRGB(float h, float s, float b)

 static float[] RGBtoHSB(int r, int g, int b, float hsb[])

 Color brighter()

 Color darker()

 static Color decode(String str) throws NumberFormatException

 boolean equals(Object obj)

 int getBlue()

 int getGreen()

 int getRGB()

 int getRed()

Lớp Color

import java.applet.Applet;

import java.awt.Color;

import java.awt.Graphics;

/* <applet code="BlueString" width=300 height=100>

</applet> */

public class BlueString extends Applet {

public void paint(Graphics g) {

g.setColor(Color.blue);

g.drawString("Blue String", 100, 50);

}

}

Tham khảo: http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Color.html

Hiển thị chữ

Using Applet Dimensions

Using Applets in a Web Page

The Applet Class

The AppletContext Interface

Using Images

Chương 10. Applet

 Tổng quan về Applet

 Chương trình Applet đầu tiên

 Vòng đời của Applet

 Lớp Graphics

 Lớp Color, Font chữ

 Tạo Applet

 ...

6. Các bước tạo applet

 Tạo applet với JCreator

 Tự tạo applet

6.1. Tạo applet với JCreator (1)

6.1. Tạo applet với JCreator (2)

6.1. Tạo applet với JCreator (3)

6.1. Tạo applet với JCreator (4)

6.1. Tạo applet với JCreator (5)

Cấu trúc 1 JCreator project

6.2. Tạo applet thủ công

Thiết kế : Sẽ tạo cấu trúc

thư mục và tập tin

7. Chạy applet

 Chạy applet trong web page

 Chạy applet bằng appletviewer

 Chạy Applet trong môi trường JCreator

7.1. Chạy applet trong Browser

7.2. Cú pháp appletview

7.3. Chạy applet với JCreator

7.4. Applet trong Frame

 Đặt applet vào 1 frame, các frame khác hiển thị thêm thông tin

Main.htm F1.htm

<HTML>

<HEAD>

</HEAD>

<FRAMESET cols= "40%,*">

<noframes>

<BODY BGCOLOR="Lavender">

</BODY>

</noframes>

<FRAME src = "f1.htm">

<FRAME src = "applet1.htm">

</frameset>

</HTML>

Applet1.htm Applet1.java

<HTML>

<HEAD>

</HEAD>

<BODY BGCOLOR="red">

<CENTER>

<APPLET

code = "Applet1.class"

width = "200"

height = "100"

</APPLET>

</CENTER>

</BODY>

</HTML>

8. Applet có phương thức main

 Cho phép chạy applet như một application

 Viết hàm main cho applet

import java.awt.*;

import java.applet.*;

public class Applet1 extends Applet

{ public void init()

{ }

public void paint(Graphics g)

{ g.drawString("Hello from Java Applet", 10, 20 );

}

public static void main (String args[])

{ Applet1 ap = new Applet1();

ap.init(); // khởi tạo ap nhưng không gọi appletviewer

System.out.println("Applet1 runs as an application!");

}

}

9. Truyền tham số cho applet

 Truyền tham số cho applet bằng thẻ <param> đặt bên trong thẻ <Applet>

 Một tham số có tên gọi và trị của tham số.

 Thí dụ sau minh họa truyền tham số từ Applet2.htm sang Applet2.class để xuất file ảnh Xuongrong.jpj

 Cú pháp của thẻ applet:

<APPLET

code = "Applet2.class"

width = "250" height = "280">

<param name = "image"

value = "xuongrong.jpg">

</APPLET>

Truyền tham số cho applet

10. Multimedia với applet

 Multimedia - Đa môi trường, thêm hình ảnh, âm thanh vào trang web.

 Multimedia làm tăng tính hấp dẫn của trang Web.

 Các file multimedia có thể lấy ở hệ thống file cục bộ hoặc từ 1 địa chỉ URL.

10.1. Đưa ảnh vào Applet

 Các dạng ảnh được chấp nhận: JPG, JPEG, GIF.

 Các bước hiển thị ảnh trong applet

• Xác định địa chỉ file ảnh (file ảnh trong máy hoặc URL)

• Quyết định vị trí sẽ hiển thị ảnh.

• Cung cấp các tham số cần thiết cho phương thức tương ứng. (xem drawImage(..)

Xem thí dụ trước về nạp file ảnh cục bộ

URL với Applet

 URL= Uniform Resource Locator

 "http://www.sun.com/index.html" cho trình duyệt biết dùng hypertext transfer protocol để tải trang index.html từ www.sun.com.

 Java cung cấp lớp URL trong gói java.net cho phép tạo 1 đối tượng quản lý địa chỉ trang Web.

URL với Applet

Constructors của lớp URL

Thí dụ về mô tả 1 URL

 Mô tả 1 địa chỉ tuyệt đối

URL url1 = new URL

("http://www.sun.com/index.html");

 Để định vị tương đối 1 trang (1 file)

URL url2 = new URL (u, "tmc/abc.gif");

Trong đó mô tả abc.gif nằm trong thư mục tmc và tmc là thư mục con URL u đã có.

10.2. Xuất ảnh

 Trích 1 đối tượng ảnh trong applet từ URL

Image Img1 = getImage

("http://www.abc.com/pic1.gif");

 Trích 1 đối tượng ảnh trong applet từ local file

Image Img2 = getImage

(getCodeBase(), "pic2.jpg");

 Vẽ ảnh Img1 trong applet tại vị trí (x,y) . Dùng đối tượng Graphics g của Applet

g.drawImage (Img1, x,y,this);

Tham khảo lại method drawImage của lớp Graphics

10.3. Vẽ trong Applet

Dùng các hành vi của lớp Graphics về vẽ đã được giới thiệu trong chương đồ họa :

 drawLine (x1,y1, x2, y2);

 drawRect (x,y,Width,Height) , fillRect (x,y,Width,Height) ;

 drawOval (x,y,width,height) , fillOval (x,y,width,height)

 drawArc (x,y,width,Height,startAngle, degree)

 fillArc (x,y,width,Height,startAngle, degree)

 ...

10.4. Âm thanh với Applet

 Interface java.applet.AudioClip cho việc xuất âm thanh.

 Các hành vi:

Âm thanh với Applet

 Khai báo và nạp AudioClip

AudioClip audioClip;

 Lấy file âm thanh từ local file

AudioClip getAudioClip (getDocumentBase(), String Filename);

 Lấy file âm thanh từ URL

AudioClip getAudioClip (URL url);

AudioClip getAudioClip (URL url , String filename );

11. Cách chuyển 1 ứng dụng thành Applet

(1) import java.applet.*;

• Đổi lớp cha từ Frame sang Applet

• Đổi constructor thành public void init(), bỏ phát biểu super(...) nếu có vì đây là hành vi của lớp Frame.

• Bỏ Window Listener vì trong Applet không có tác vụ này

• Bỏ hàm main

Cách chuyển 1 ứng dụng thành Applet

import java.awt.*;

import java.awt.event.*;

class A extends Frame

{ <data>

A()

{ super(...);

<code>

addWindowListener(...)

}

< các methods>

public static void main(...)

{ ... }

}

Minh họa chuyển application thành applet

8.11- Tóm tắt

 Applet là 1 ứng dụng Java nhỏ nhúng vào trính duyệt

 Để giữ tính bảo mật, applet không được truy cập hệ thống file của máy khách, không được truy cập server nào khác ngoại trừ server mà từ đó applet này được download.

 Applet có chu kỳ sống: init, start, stop, destroy.

 Gói java.applet chứa lớp Applet giúp ta tạo ra applet.

 Tạo 1 applet tức là hiện thực 1 lớp con của lớp Applet.

Tóm tắt

 Phương thức paint(Graphics g), repaint(Graphics g), update(Graphics g) thường được dùng để vẽ trong panel của applet

 Trong Applet, ta có thể xuất chữ, vẽ các hình, xuất ảnh bằng các hành vi drawXXX(...).

 Muốn applet có thể chạy như 1 application thì viết thêm hàm main cho applet.

 Truyền tham số từ file.htm sang applet bằng thẻ <parameter name="paraName" value ="paraValue">

Tóm tắt

 Lấy file ảnh bằng

Img = getImage(getCodeBase(), ImageFileName);

 Gói java.net chứa lớp URL mô tả về một url

 Tạo 1 đối tượng URL

URL url1 = new URL("http://www.sun.com/index.html");

 Interface java.applet.AudioClip khai báo các han2h vi xử lý âm thanh gồm start(), loop(), stop()

 File âm thanh file.au

 Nạp file âm thanh

AudioClip audioClip=

getAudioClip(getDocumentBase(), MusicFileName);

Applet và application

 Applet là 1 ứng dụng nhỏ được xây dựng nhằm mục đích phân phối trên Web và được thực thi bên trong (nhúng vào) trình duyệt trong khi application được thực thi độc lập (standalone application).

 Một applet phải được xây dựng 1 lớp con của lớp java.applet.Applet còn application thì không bị ràng buộc này.

 Application được thực thi thông qua Java Interpreter (máy ảo Java, trình java.exe) trong khi applet phải được thực thi thông qua Browser có hỗ trợ Java hay trình appletviewer của môi trường Java.

Applet và Application

 Thực thi Application bắt đầu từ main(...) trong khi applet bắt đầu thực thi bằng init().

 Phương thức drawXXX dùng để xuất dữ liệu trong applet trong khi Application dùng System.out.print để xuất dữ liệu.

 Applet phải bắt đầu bằng ít nhất 1 public class nếu không có thì sẽ có lỗi lúc biên dịch. Không bắt buộc phải có hàm main(...) trong applet. Nếu applet có hàm main(...) thì có thể chạy với 2 chế độ : (1) Chạy trong Browser, (2) Chạy dạng application. Còn application luôn phải có hàm main(...).

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: #java