HTML & APPLET

Một phần của tài liệu LTHDT (Trang 143 - 148)

L P TRÌNH GIAO DIN TRÊN JAVA

6.4 HTML & APPLET

Applet là m t ch ng trình Java có th ch y trong các trình duy t web có h tr Java. T t c các applet đ u là các l p con c a l p Applet. t o applet, ta c n import hai gói sau:

import java.applet.*; import java.awt.*;

6.4.1 C u trúc c a m t Applet

C u trúc t ng quát c a m t applet nh sau:

public class <Tên l p applet> extends Applet{ … // Các thu c tính

public void init(){…} public void start(){…} public void stop(){…} public void destroy(){…} … // Các ph ng th c khác }

Các ph ng th c c b n c a m t applet:

• init(): Kh i t o các tham s , n u có, c a applet. • start(): Applet b t đ u ho t đ ng.

• stop(): Ch m d t ho t đ ng c a applet.

• destroy(): Th c hi n các thao tác d n d p tr c khi thoát kh i applet.

L u ý:

• Khơng ph i t t c các applet đ u ph i cài đ t đ y đ 4 ph ng th c c b n trên. Applet cịn có th cài đ t m t s ph ng th c tu ch n (không b t bu c) sau:

• paint(Graphics): Ph ng th c v các đ i t ng giao di n bên trong applet. Các thao tác v này đ c th c hi n b i đ i t ng đ ho Graphics (là tham s đ u vào).

• repaint(): Dùng đ v l i các đ i t ng trong applet. Ph ng th c này s t

• update(Graphics): Ph ng th c này đ c g i sau khi th c hi n ph ng th c paint nh m t ng hi u qu v . Ph ng này s t đ ng g i ph ng th c paint(). Ch ng trình 6.17 cài đ t m t applet đ n gi n, m i ph ng th c s in ra thông báo r ng applet

đang trong th i đi m t ng ng.

Ch ng trình 6.17

package vidu.chuong6; import java.awt.*; import java.applet.*;

public class SimpleApplet extends Applet{

private StringBuffer buffer; // Chu i thông báo

public void init(){ // Kh i t o buffer = new StringBuffer();

addBuffer(“initializing…”); }

public void start(){ // Kích ho t addBuffer(“starting…”);

}

public void stop(){ // D ng addBuffer(“stopping…”);

}

public void destroy(){ // Thoát addBuffer(“unloading…”);

}

private void addBuffer(String newBuffer){

buffer.append(newBuffer); // Thêm thông báo repaint();

}

public void paint(Graphics g){

g.drawString(buffer.toString(), 5, 15); // Hi n thông báo }

}

6.4.2 S d ng applet

Applet không th ch y nh m t ng d ng Java đ c l p (nó khơng có hàm main), mà nó ch ch y

đ c khi đ c nhúng trong m t trang HTML (đuôi .htm, .html) và ch y b ng m t trình duy t web thông th ng.

Các b c xây d ng và s d ng m t applet bao g m:

• Biên d ch mã ngu n thành l p .class • Nhúng mã .class c a applet vào trang html.

nhúng m t applet vào m t trang html, ta dùng th (tag) <Applet> nh sau:

<APPLET CODE = “Tên_file_applet.class” WIDTH = “Chi u_r ng”

HEIGHT = “Chi u_cao”> </APPLET>

Trong đó:

• Tên applet là tên file mã ngu n đã biên d ch thành file ch y có đi .class c a Java. • Chi u r ng và chi u cao là kích th c c a vùng trên trang html mà applet s đ c đ t vào. Ví d , trong trang myHtml.htm có ch a n i dung nh sau:

<HTML> <HEAD>

<TITLE> A simple applet </TITLE> </HEAD>

<BODY>

This is the output of applet:

<APPLET CODE = “SimpleApplet.class” WIDTH=200 HEIGHT=20> </APPLET>

</BODY> </HTML>

s nhúng applet đã đ c đnh ngh a trong ch ng trình 6.17 vào m t vùng có kích th c 200*20 trong trang myHtml. Bây gi , ta có th ki m nghi m ch ng trình applet c a mình b ng cách m trang myHtml trên các trình duy t thơng th ng.

Ch ng trình 6.18 cài đ t m t applet có ch c n ng t ng t nh ch ng trình 6.7, th c hi n các thao tác tính tốn c b n trên hai s . Ngo i tr vi c đây là m t applet, nên có th ch y trên m t trang html. Ch ng trình 6.18 package vidu.chuong6; import java.awt.*; import java.awt.event.*; import java.applet.*;

public class AppletDemo extends Applet implements ActionListener{ Label lbl1, lbl2, lblKq;

TextField txt1, txt2;

Button btnCong, btnTru, btnNhan, btnChia, btnThoat;

public void init(){

this.setLayout(new GridLayout(6,2)); //Ch đ hi n th 6 dòng, 2 c t lbl1 = new Label(“So thu nhat:”); // Nhãn s th nh t

txt1 = new TextField(); // Ô v n b n s th nh t this.add(txt1);

lbl2 = new Label(“So thu hai:”); // Nhãn s th hai this.add(lbl2);

txt2 = new TextField(); // Ô v n b n s th hai this.add(txt2);

lblKq = new Label(); // Nhãn k t qu this.add(lblKq);

this.add(new Label());

// Các nút nh n

btnCong = new Button(“Cong”); // Nút c ng btnCong.addActionListener(this); // B t s ki n this.add(btnCong);

btnTru = new Button(“Tru”); // Nút tr btnTru.addActionListener(this);

this.add(btnTru);

btnNhan = new Button(“Nhan”); // Nút nhân btnNhan.addActionListener(this);

this.add(btnNhan);

btnChia = new Button(“Chia”); // Nút chia btnChia.addActionListener(this);

this.add(btnChia);

btnThoat = new Button(“Thoat”); // Nút thoát btnThoat.addActionListener(this);

this.add(btnThoat); }

/* Ph ng th c x lí s ki n nút đ c nh n */ public void actionPerformed(ActionEvent ae){

float x = Float.parseFloat(txt1.getText()); float y = Float.parseFloat(txt2.getText()); float kq = 0;

if(ae.getSource() == btnCong) // C ng hai s kq = x + y;

if(ae.getSource() == btnTru) // Tr hai s kq = x - y;

if(ae.getSource() == btnNhan) // Nhan hai s kq = x*y;

if(ae.getSource() == btnChia)&&(y != 0) // Chia hai s kq = x/y;

if(ae.getSource() == btnThoat) // Thốt kh i ch ng trình System.exit(0);

// Thay đ i n i dung k t qu

lblKq.setText(“Ket qua la: ” + String.valueOf(kq)); repaint(); // V l i các đ i t ng }

}

Khi nhúng applet này vào m t trang html b t kì, ta có th ki m tra th y r ng nó có ch c n ng t ng t nh ng d ng 6.7.

L u ý, s khác nhau gi a m t application và m t applet:

• Application là m t ng d ng Java đ c l p, nó có th ch y đ c l p trên máy o Java. Trong khi đó, applet ch ch y đ c khi nhúng trong m t trang html, ch y nh vào các trình duy t web có h tr Java.

• Application ch y d a vào hàm main(). Trong khi đó, applet khơng có hàm main().

• hi n th các thông báo, application dùng System.out.println(). Trong khi đó, applet dùng ph ng th c drawString() c a l p Graphics.

6.4.3 Truy n tham s cho Applet

Trong nhi u tr ng h p, applet ph i ph thu c vào các tham s bên ngồi truy n vào. Khi đó ta có th dùng th PARAM c a html đ truy n tham s cho applet. Cú pháp:

<APPLET CODE = “Tên_file_applet.class” WIDTH = “Chi u_r ng”

HEIGHT = “Chi u_cao”>

<PARAM NAME=”Tên_bi n” VALUE=”Giá_tr ”> … // Các tham s khác

</APPLET>

Khi đó, trong mã ngu n c a applet, ta dùng ph ng th c getParameter() đ đ c giá tr các tham s

đ c truy n vào:

getParameter(Tên_bi n);

Ch ng trình 6.19 minh ho vi c truy n tham s cho m t applet: Applet mơ ph ng giao di n tìm ki m: m t nhãn h ng d n, m t ô v n b n và m t nút nh n. Tu vào ngôn ng mà nhãn và nút nh n có giá tr text khác nhau. Bi n ngơn ng là m t tham s truy n t trình duy t vào. ( ây là mô ph ng giao di n, c ch tìm ki m khơng ho t đ ng).

Ch ng trình 6.19

package vidu.chuong6; import java.awt.*; import java.applet.*;

public class ParamDemo extends Applet{ Label lbl;

TextField txt; Button btn;

public void init(){

this.setLayout(new GridLayout(2,2)); //Ch đ hi n th 6 dòng, 2 c t String langue = getParameter(“langue”);// Lo i ngôn ng

if(langue.equals(“vn”)){ // Ti ng Vi t

lbl = new Label(“Nhap tu khoa”); // Nhãn s th nh t btn = new Button(“Tim kiem”); // Nút c ng

}else if(langue.equals(“fr”)){ // Ti ng Pháp lbl = new Label(“Tapez des mots”);

btn = new Button(“Chercher”);

}else{ // Ti ng Anh, m c đ nh lbl = new Label(“Enter keys”);

btn = new Button(“Search”); } txt = new TextField(); this.add(lbl); this.add(txt); this.add(btn); } }

Khi đó, applet ph i đ c nhúng vào trang html v i đo n mã nh sau:

<APPLET CODE = “ParamDemo.class” WIDTH = 200 HEIGHT = 20> <PARAM NAME=”langue” VALUE=”vn”>

</APPLET>

Ta có th thay th value c a param b ng các giá tr “vn”, “fr” và “en” đ th y đ c các ch đ

ngôn ng khác nhau đ c hi n th trong applet.

Một phần của tài liệu LTHDT (Trang 143 - 148)

Tải bản đầy đủ (PDF)

(173 trang)