LẬP TRÌNH JAVA NC
Chương 04: Applet
Bộ môn: Lập trình máy tính
Nội dung chương 04
✦
Applet:
–
khái niệm
–
các phương thức
–
nhúng applet vào trang web
–
xem applet: bằng trình duyệt, bằng appletviewer
–
truyền tham số cho applet
–
làm cho applet chạy như 1 ứng dụng
✦
Hi n th nhể ị ả
✦
Th c hi n file âm thanhự ệ
Applets
✦
M t ộ applet là m t ộ Panel cho phép t ng tác ươ
v i m t ch ng trình Java.ớ ộ ươ
✦
M t applet th ng đ c nhúng vào trong m t ộ ườ ượ ộ
trang Web và có th ch y t m t trình duy t.ể ạ ừ ộ ệ
✦
B n c n đo n mã HTML đ c bi t trong trang ạ ầ ạ ặ ệ
Web đ "nói" cho trình duy t v applet.ể ệ ề
✦
Vì lý do b o m t, các applet ch y trong 1 ả ậ ạ
sandbox: chúng không có quy n truy nh p đ n ề ậ ế
h th ng file trên các máy client.ệ ố
Applet Support
✦
H u h t các trình duy t ngày nay có h tr ầ ế ệ ỗ ợ
Java 1.4 n u chúng có ế plugin thích h p.ợ
✦
Internet Explorer 5.5 đã đ c c p nh t, ượ ậ ậ
nh ng Netscape thì ch a.ư ư
✦
S h tr t t nh t không ph i là trình ự ỗ ợ ố ấ ả
duy t mà là ch ng trình đ c l p ệ ươ ộ ậ
appletviewer
✦
Nói chung b n nên c g ng vi t các applet ạ ố ắ ế
có th ch y v i m i trình duy t.ể ạ ớ ọ ệ
Một applet là gì
✦
B n vi t 1 applet b ng cách m r ng ạ ế ằ ở ộ
l p ớ Applet
✦
Applet ch là 1 l p gi ng các l p khác, ỉ ớ ố ớ
n u mu n b n có th s d ng chúng ế ố ạ ể ử ụ
trong các ch ng trình.ươ
✦
Khi b n vi t 1 applet, b n ch đang vi t ạ ế ạ ỉ ế
m t ph n c a ch ng trình.ộ ầ ủ ươ
✦
Trình duy t cung c p ệ ấ main method
Phả hệ của Applet
java.lang.Object
|
+ java.awt.Component
|
+ java.awt.Container
|
+ java.awt.Panel
|
+ java.applet.Applet
Applet đơn giản nhất có thể
TrivialApplet.java
import java.applet.Applet;
public class TrivialApplet extends Applet { }
TrivialApplet.html
<applet>
code="TrivialApplet.class”
width=150 height=100>
</applet>
Applet có ý nghĩa đơn giản nhất
import java.awt.*;
import java.applet.Applet;
public class HelloWorld extends Applet {
public void paint( Graphics g ) {
g.drawString( "Hello World!", 30, 30 );
}
}
Các phương thức Applet
public void init ()
public void start ()
public void stop ()
public void destroy ()
public void paint (Graphics)
Also:
public void repaint()
public void update (Graphics)
public void showStatus(String)
public String getParameter(String)
Tại sao một applet chạy được
✦
B n vi t 1 applet b ng cách m r ng l p ạ ế ằ ở ộ ớ Applet.
✦
Applet xác đ nh các ph ng th c ị ươ ứ init( ), start( ),
stop( ), paint(Graphics), destroy( )
✦
Các ph ng th c trên không th c hi n vi c gì ươ ứ ự ệ ệ
c . Chúng là các ả stub (g c).ố
✦
B n khi n applet làm gì đó b ng cách ch ng các ạ ế ằ ồ
ph ng th c trên.ươ ứ
public void init ( )
✦
Đây là ph ng th c đ u tiên đ th c hi n.ươ ứ ầ ể ự ệ
✦
Nó là n i lý t ng đ kh i t o các bi n.ơ ưở ể ở ạ ế
✦
Nó là n i t t nh t đ xác đ nh các thành ơ ố ấ ể ị
ph n GUI (buttons, text fields, scrollbars, ầ
etc.), s p đ t và thêm các listener vào ắ ặ
chúng.
✦
H u h t các applet b n vi t s có m t ầ ế ạ ế ẽ ộ
ph ng th c ươ ứ init( ).
public void start ( )
✦
Không ph i luôn c n đ n.ả ầ ế
✦
Đ c g i sau ượ ọ init( )
✦
Đ c g i khi trang đ c t i ho c kh i đ ng l i.ượ ọ ượ ả ặ ở ộ ạ
✦
Th ng đ c s d ng chung v i ườ ượ ử ụ ớ stop( )
✦
start() và stop( ) th ng đ c s d ng khi Applet ườ ượ ử ụ
đang tính toán m t nhi u th i gian và b n không ấ ề ờ ạ
mu n ti p t c đ còn chuy n đ n trang khác.ố ế ụ ể ể ế
public void stop( )
✦
Không ph i luôn c n đ n.ả ầ ế
✦
Đ c g i khi trình duy t b l i trang ượ ọ ệ ỏ ạ
web
✦
Đ c g i ngay tr c ượ ọ ướ destroy( )
✦
Dùng stop( ) n u applet đang tính toán ế
n ng nh c mà b n không mu n ti p t c, ặ ọ ạ ố ế ụ
đ trình duy t đ n trang khác.ể ệ ế
✦
Th ng đ c s d ng chung v i ườ ượ ử ụ ớ start()
public void destroy( )
✦
Hi m khi c n đ nế ầ ế
✦
Đ c g i sau ượ ọ stop( )
✦
S d ng đ gi i phóng các tài nguyên ử ụ ể ả
h th ng m t cách rõ ràng.ệ ố ộ
✦
Các tài nguyên h th ng th ng đ c ệ ố ườ ượ
gi i phóng m t cách t đ ng.ả ộ ự ộ
Trình tự các phương thức được gọi
✦
init và destroy ch đ c g i ỉ ượ ọ
đúng 1 l n.ầ
✦
start và stop đ c g i m i khi ượ ọ ỗ
trình duy t đ a ra và r i kh i ệ ư ờ ỏ
trang web.
✦
do some work là đo n mã ạ
đ c g i b i các ượ ọ ở listener
✦
paint đ c g i khi applet c n ượ ọ ầ
đ c v l i.ượ ẽ ạ
init()
start()
stop()
destroy()
do some work
Các phương thức Applet hữu dụng khác
✦
System.out.println(String s)
–
Chỉ làm việc trong appletviewer, không trong
các trình duyệt.
–
Tự động mở một output window.
✦
showStatus(String) hi n th chu i String ể ị ỗ
trong dòng tr ng thái c a applet.ạ ủ
–
Mỗi lần gọi ghi đè lên lời gọi trước đó.
–
Bạn phải cho thời gian để đọc dòng trạng thái!
Applets are not magic!
✦
B t kỳ cái gì b n có th th c hi n trong 1 applet, ấ ạ ể ự ệ
b n đ u có th th c hi n trong 1 ng d ng.ạ ề ể ự ệ ứ ụ
✦
B n có th th c hi n m t s vi c trong 1 ng ạ ể ự ệ ộ ố ệ ứ
d ng, nh ng không th th c hi n đ c trong ụ ư ể ự ệ ượ
1applet.
✦
N u b n mu n truy nh p các file t 1applet, nó ế ạ ố ậ ừ
ph i là 1 “trusted” applet.ả
✦
Các trusted applet không n m trong ph m vi c a ằ ạ ủ
khóa h c này.ọ
Cấu trúc của một trang HTML
HTML
TITLE
BODYHEAD
(content)
✦
H u h t các ầ ế
HTML tag là
các container.
✦
M t container ộ
t ừ <tag> đ n ế
</tag>
HTML
<html>
<head>
<title> Hi World Applet </title>
</head>
<body>
<applet code="HiWorld.class”
width=300 height=200>
<param name="arraysize" value="10">
</applet>
</body>
</html>
Xem Applet bằng appletviewer
✦
B n có th test hay view các applet ạ ể
trong c a s DOS prompt b ng cách ử ổ ằ
g i ti n ích appletviewerọ ệ
Xem Applet từ trình duyệt Web
✦
B n cũng có th test hay view các ạ ể
applet trong m t trình duy t Webộ ệ
Để truyền tham số cho applet, tham số phải được khai
báo bằng thẻ <param> (không có end tag) đặt trong thẻ
<applet>
<param name=parametername value=stringvalue>
Vd:
<applet>
<param name = Message value = "Welcome to Java">
<param name = X value = 20>
<param name = Y value = 30>
</applet>
Truyền String cho Applet
Làm cho Applet chạy như 1 ứng dụng
✦
Nói chung, 1 applet có th đ c convert thành 1 ng ể ượ ứ
d ng mà không m t ch c năng.ụ ấ ứ
✦
M t ng d ng đ c convert thành 1 applet ch c n nó ộ ứ ụ ượ ỉ ầ
không vi ph m s gi i h n b o m t áp đ t cho applet.ạ ự ớ ạ ả ậ ặ
✦
B n có th th c thi ph ng th c main trong 1 applet ạ ể ự ươ ứ
đ làm cho nó có th ch y nh 1 ng d ng: ể ể ạ ư ứ ụ
–
Khi chạy chương trình như 1 applet, phương thức main bị bỏ
qua.
–
Khi chạy chương trình như 1 ứng dụng, phương thức main được
gọi.
Làm cho Applet chạy như 1 ứng dụng
public static void main(String[] args) {
JFrame frame = new JFrame("Running a
program as applet and frame");
TestApplet applet = new TestApplet();
frame.getContentPane().add(applet,
BorderLayout.CENTER);
applet.init();
applet.start();
frame.setSize(300,300);
frame.setVisible(true);
}
Hiển thị ảnh
✦
Bạn đã học cách sử dụng lớp ImageIcon để tạo
biểu tượng từ 1 file ảnh và dùng phương thức
setIcon hoặc constructor để đặt biểu tượng trong 1
thành phần GUI.
ImageIcon imgIcon = new ImageIcon(path);
✦
Biểu tượng ảnh đó hiển thị 1 ảnh kích thước cố định.
Để hiển thị ảnh trong 1 kích thước thay đổi, sử dụng
lớp java.awt.Image
Image img = imgIcon.getImage();