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

– 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

– .

 

pdf 35 trang yennguyen 2960
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 hãy click vào nút Download ở trên

Tóm tắt nội dung 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

Bài giảng Nhập môn lập trình Java - Bài 5: Applet - Võ Tấn Dũng
GIẢNG VIÊN:
VÕ TẤN DŨNG
NHẬP MÔN JAVA
BÀI 5
APPLET
TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN TP.HCM
2G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
NỘI DUNG TRÌNH BÀY
• Tạo các applet
• Đối tượng đồ hoạ Graphics
• Kĩ thuật khung hình phụ
PHẦN 1
TẠO CÁC APPLET
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
4G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
– 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
– ...
MỘT SỐ METHOD CỦA COMPONENT
5G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• 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.
XÂY DỰNG CÁC APPLET
6G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• Ví dụ 1: Tạo file TestApplet.java
XÂY DỰNG CÁC APPLET
• Dịch: javac 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);
}
}
7G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• Thực thi applet
– Cách 1: Tạo file TestApplet.html có nội dung như 
sau: 
<APPLET CODE=“TestApplet.class” WIDTH=500 HEIGHT=500 
– 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>
XÂY DỰNG CÁC APPLET
8G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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) {}
}
KHUNG CỦA MỘT APPLET CƠ BẢN
9G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• 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.
HOẠT ĐỘNG CỦA APPLET
10
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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
HOẠT ĐỘNG CỦA MỘT APPLET
PHẦN 2
LỚP GRAPHICS
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
12
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• 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)
– ...
LỚP GRAPHICS
13
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• Hệ tọa độ
LỚP GRAPHICS
14
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• 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);
LỚP GRAPHICS
15
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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);
}
}
LỚP GRAPHICS
16
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
LỚP GRAPHICS
17
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• 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,...);
LỚP GRAPHICS
18
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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);
}
}
LỚP GRAPHICS
19
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
LỚP GRAPHICS
20
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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);
}
}
LỚP GRAPHICS
21
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
LỚP GRAPHICS
22
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
• 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
CÁC LỚP TIỆN ÍCH KHÁC
23
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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);
}
}
CÁC LỚP TIỆN ÍCH KHÁC
24
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
CÁC LỚP TIỆN ÍCH KHÁC
25
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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);
}
}
XỬ LÝ FONT VẼ
PHẦN 3
KỸ THUẬT
KHUNG HÌNH PHỤ
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
27
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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
28
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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
}
}
29
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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ổ.
30
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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
31
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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);
}
//...
}
32
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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
33
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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
34
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g
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.
HẾT
BÀI 5
G
V
: 
V
õ
 T
ấ
n
 D
ũ
n
g

File đính kèm:

  • pdfbai_giang_nhap_mon_lap_trinh_java_bai_5_applet_vo_tan_dung.pdf