Tải bản đầy đủ (.pdf) (25 trang)

Tài liệu JAVA-6 pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (260.53 KB, 25 trang )

1
Chng 6 Applets

Sau khi kết thúc chương này, bạn có thể nắm được các nội dung sau:
Sau khi hoc xong chng nay, ban co thê nm đc cac nơi dung sau:
 Hiêu đc cac Applet cua Java
 Phân biêt applet va cac ng dung application
 Tim hiêu chu trinh sơng cua mơt applet
 Tao cac applet
 Hiên thi cac hinh anh s dung applet
 Trun tham sơ cho applet
 Tim hiêu ng dung cua applet trong GUI

6.1 Java Applet


Applet la mơt chng trinh Java co thê chay trong trinh dut web. Tât ca cac applet đêu
la cac lp con cua lp ‘Applet’.
Lp Applet thc package ‘java.applet’. Lp Applet bao gơm nhiêu phng thc đê điêu
khiên qua trinh thc thi cua applet. ê tao applet, ban cân import hai goi sau:
 java.applet
 java.awt

6.2 Câu truc cua mơt Applet

Mơt Applet đinh nghia câu truc cua no t 4 s kiên xay ra trong st qua trinh thc thi.
ơi vi mơi s kiên, mơt phng thc đc goi mơt cach t đơng. Cac phng thc nay
đc minh hoa trong bang 6.1
iêu quan trong la khơng phai luc nao applet cung bt đâu t ban đâu. Ma no bt đâu t
vi tri tiêp theo cua qua trinh thc thi trc đo.
Ngoai nhng phng thc c ban nay, con co nhng phng thc ‘paint()’ va ‘repaint()’.


Phng thc paint() dung đê hiên thi mơt đng thng (line), text, hoc mơt hinh anh
trên man hinh. ơi sơ cua phng thc nay la đơi tng cua lp Graphics. Lp nay thc
goi java.awt. Câu lênh sau đc dung đê import lp Graphics:

import java.awt.Graphics;

Phng thc Chc nng
init() c goi trong qua trinh khi tao applet. Trong qua trinh khi tao, no
se tao đơi tng đê cung câp cho applet. Phng thc nay đc dung
đê tai cac hinh anh đơ hoa, khi tao cac biên va tao cac đơi tng.
start() c goi goi khi mơt applet bt đâu thc thi.
Mơt khi qua trinh khi tao hoan tât, thi applet đc khi đơng.
Phng thc nay đc dung đê khi đơng lai applet sau khi no đa
ngng trc đo
stop() c goi khi ngng thc thi mơt applet. Mơt applet bi ngng trc
khi no bi huy.
2
destroy() c dung đê huy môt applet. Khi môt applet bi huy, thi bô nh, thi
gian thc thi cua vi x ly, không gian đia đc tra vê cho hê thông.
Bang 6.1: cac phng thc cua môt applet
Phng thc ‘repaint()’ đc dung khi ca sô cân câp nhât lai. Phng thc nay chi cân
môt thông sô. Tham sô nay la đôi tng cua lp Graphics.

Applet s dung phng thc ‘showStatus()’ đê hiên thi thông tin trên thanh trang thai.
Phng thc co tham sô thuôc kiêu d liêu String. ê lây cac thông tin cua applet, user
co thê overide phng thc ‘getAppletInfo()’ cua lp Applet. Phng thc nay tra vê 1
đôi tng kiêu String.

Cac phng thc cua applet init(), start(), stop(), destroy(), va paint() đc tha kê t
môt applet. Nhng mc đinh nhng phng thc nay không thc thi môt thao tac nao ca.

ây la vi du đn gian cua applet. Câu lênh sau tao môt lp co tên la ‘Applet1’, lp nay se
kê tha tât ca cac phng thc va biên cua lp ‘applet’.

public class Applet1 extends Applet

Phng thc init() va paint() thng đc dung đê thc hiên môt sô ham đê khi tao va
ve applet. Phng thc ‘g.drawstring()’ chi ra vi tri ma đoan vn ban đc ve  đâu trên
man hinh.

Chng trinh 6.1 hiên thi môt chuôi  dong 70 va côt 80:

Chng trinh 6.1

import java.awt.*;
import java.applet.*;
public class Applet1 extends Applet
{
int num;
public void init()
{
num = 6;
}
public void paint (Graphics g)
{
g.drawString (“Hello to Applet. Chapter ” + num, 70, 80);
showStatus (getAppletInfo());
//Hiên thi môt chuôi đc tra vê t ham getAppletInfo() trên thanh trang
thai
}
public String getAppletInfo() //user overrides

{
return “Created by Aptech”;
}
3
}

S dung cu phap sau đê dich môt Applet:

javac Applet1.java

ê thc thi môt applet, ta cân tao môt file HTML. File HTML nay s dung the applet.
The applet nay lây tham sô đâu tiên la đng dân cua file applet.

The applet co hai thuôc tinh sau:

 Width
 Height

ê truyên tham sô vao applet, s dung param, sau đo la the value. Sau đây la vi du cua
the applet:

<applet code=Applet1 width=300 height=200>
</applet>

Luc nay, ta co thê thc thi applet nay bng cach dung trinh xem applet. ây la công cu
cua JDK. ê chay file HTML trong trinh xem applet, ta go câu lênh sau:

Appletviewer abc.html // ‘abc.html’ la tên cua file HTML

Môt tuy chon khac cua applet la ta thêm the applet nh la môt dong chu thich trong đoan

code. Luc đo, applet đc dich, va thc thi bng cach s dung lênh sau:

Appletviewer Applet1.java

Sau đây la kêt qua cua chng trinh trên:


4

Hinh 6.1 Applet

6.2.1 S khac nhau giua Application va Applet


Sau đây la s khac nhau gia application va applet:
 ê thc thi cac application chung ta dung trinh thông dich Java, trong khi đo applet
co thê chay đc trên cac trinh duyêt (co hô tr Java) hay s dung công cu
AppletViewer, công cu nay đi kem vi JDK.
 Qua trinh thc thi cua application bt đâu t phng thc ‘main()’. Tuy nhiên applet
thi không lam nh vây.
 Cac application s dung ‘System.out.println()’ đê hiên thi kêt qua ra man hinh trong
khi đo applet s dung phng thc ‘drawstring()’ đê xuât ra man hinh.

Môt điêu đang lu y la môt chng trinh Java đn le thi co thê va la application va la
applet. Chc nng cua applet đc bo qua khi no đc thc thi nh la môt application va
ngc lai.

Chng trinh 6.2 se minh hoa điêu nay

Chng trinh 6.2


import java.applet.Applet;
import java.awt.*;
/*
<applet code = "both" width = 200 height = 100>
</applet>
*/

public class both extends Applet
{
Button btn;
public void init()
{
btn = new Button ("Click");
}

public void paint (Graphics g)
{
g.drawString ("Applet", 70, 50);
}
public static void main (String args[])
{
both app = new both();
app.init();
System.out.println("Application Main");
5
}
}

Sau khi biên dich chng trinh, no co thê đc thc thi nh la môt applet bng cach s

dung cu phap sau:

appletviewer both.java

Kêt qua nh sau:

Hinh 6.2 Applet

Nêu chay chng trinh trên nh môt application, thi s dung cu phap sau:

java both

Kêt qua la:



Hinh 6.3 Application

Khi applet chay trên trinh duyêt web, đc điêm nay thc s hu ich khi ban muôn tai
applet trong môt frame mi. Vi du: trong applet đc tao đê chat, môt sô website s dung
môt ca sô chat riêng biêt đê chat. Ban cung co thê kêt hp cac đc điêm cua frame va
applet vao trong môt chng trinh.

6.2.3 Nhng gii han bao mât trên applet

6
Co môt sô han chê ma applet không thê lam đc. Bi vi cac applet cua Java co thê pha
hong toan bô hê thông cua user. Cac lâp trinh viên Java co thê viêt cac applet đê xoa file,
lây cac thông tin cac nhân cua hê thông…
Vi thê, cac applet cua java không thê lam cac viêc sau:

 Không thê đoc hoc ghi file trên hê thông file cua user.
 Không thê giao tiêp vi cac site internet, nhng chi co thê vi cac trang web co applet
ma thôi.
 Không thê chay bât c chng trinh gi trên hê thông cua ngi đoc.
 Không thê tai bât c chng trinh đc lu tr trong hê thông cua user.

Nhng gii han trên chi đung khi cac applet đc chay trên trinh duyêt Netscape
Navigator hoc Microsoft Internet Explorer.

6.3 Chu trinh sông cua môt Applet

Chu trinh sông cua môt Applet đc mô ta  s đô di đây:



Hinh 6.4 Chu trinh sông cua môt applet

Trc tiên, applet đc tao.
Bc kê tiêp la khi tao. iêu nay xay ra khi môt applet đc nap. Qua trinh nay bao
gôm viêc tao cac đôi tng ma applet cân. Phng thc init() đc override đê cung câp
cac hanh vi đê khi tao.
Môt khi applet đc khi tao, applet se đc khi đông. Applet co thê khi đông ngay ca
khi no đa đc ngng trc đo. Vi du, nêu trinh duyêt nhay đên môt liên kêt nao đo 
trang khac, luc đo applet se bi ngng, va đc khi đông tr lai khi user quay vê trang
đo.

S khac nhau gia qua trinh khi tao va qua trinh khi đông la môt applet co thê khi
đông nhiêu lân, nhng qua trinh khi tao thi chi xay ra môt lân.

Phng thc ‘start()’ đc override đê cung câp cac thao tac khi đông cho applet.


Destroy
Stop
Creation
Initalization
Starting
7
Phng thc ‘stop()’ chi đc goi khi user không con  trang đo na, hoc trang đo đa
đc thu nho lai  di thanh taskbar.

Kê tiêp la phng thc ‘destroy()’. Phng thc nay giup applet don dep trc khi no
đc giai phong khoi vung nh, hoc trc khi truyêt duyêt kêt thuc. Phng thc nay
đc dung đê huy nhng luông (thread) hay qua trinh đang chay.

Phng thc ‘destroy()’ khac vi phng thc finalize() la phng thc destroy() chi
dung cho applet, trong khi finalize() la cach tông quat đê don dep applet.

Phng thc paint() cung la môt phng thc quan trong khac. Phng thc nay cho
phep ta hiên thi môt cai gi đo trên man hinh. Co thê la text, đng thng, mau nên, hoc
hinh anh. Phng thc nay xay ra nhiêu lân trong suôt qua trinh applet tôn tai. Phng
thc nay thc thi môt lân sau khi applet đc khi tao. No se lp đi lp lai khi di chuyên
t ca sô trinh duyêt sang ca sô khac. No cung xay ra khi ca sô trinh duyêt thay đôi vi
tri cua no trên man hinh.

Phng thc ‘paint()’ co môt tham sô. Tham sô nay la đôi tng cua lp Graphics. Lp
Graphics thuôc lp java.awt, chung ta phai import trong đoan code cua applet. Chung ta
co thê s dung đoan ma sau:

import java.awt.Graphics;


6.4 Truyên tham sô cho Applet

Trong chng trinh sau, chung ta se truyên tham sô cho applet. Thanh phân nut ‘bNext’
co tên đc truyên nh la môt tham sô. Phng thc ‘init()’ se kiêm tra tham sô co thên
la ‘mybutton’. Sau đo, no tao môt nut vi chuôi đo nh la tên cua nut. Nêu không co
tham sô truyên vao, nut đo co tên mc đinh la ‘Default’.
Bây gi chung ta đinh nghia the <PARAM> trong đoan ma HTML nh sau:

/*
<applet code=”Mybutton1” width=”100” height=”100”>
<PARAM NAME=”mybutton” value=”Display Dialog”>
</applet>
*/

Chng trinh 6.3

import java.awt.*;
import java.applet.*;
/*
<applet code="Mybutton1" width="200" height="100">
<PARAM NAME="mybutton" value="Display Dialog">
</applet>
*/
8

public class Mybutton1 extends Applet
{
Button bNext;
public void init()
{

/*getParameter returns the value of the specified pareameter in the form of a
String object*/
String str = getParameter("mybutton");
//when no parameter is passed
if (str==null)
str = new String ("Default");
//when parameter is passed
bNext = new Button(str);
add (bNext);
}
}

Sau đây la kêt qua cua chng trinh trên:



Hinh 6.5: truyên tham sô cho applet
Bây gi chung ta se s dung lp Graphics đê ve cac hinh chng han nh: đng thng,
hinh oval, va hinh ch nhât. Chung ta se hoc lp Font trong cac phân sau. Lp nay co thê
dung đê in vn ban bng bât c font nao.

6.5 Lp Graphics

Java cung câp goi AWT cho phep ta ve cac hinh đô hoa. Lp Graphics bao gôm tâp hp
rât nhiêu phng thc. Nhng phng thc nay đc s dung đê ve bât c hinh nao
trong cac hinh sau:

 Oval
 Rectangle
 Square

 Circle
 Lines
9
 Text

Ban co thê ve nhng hinh nay bng bât c mau nao. Frame, Applet va canvas la cac môi
trng đê hiên thi đô hoa.

ê ve bât c hinh anh nao chung ta cân phai co nên đô hoa (Graphical Background). ê
co đc môt nên đô hoa, chung ta goi phng thc ‘getGraphics()’ hay bât c phng
thc nao trong cac phng thc sau đây:

 repaint()
c goi khi cân ve lai nhng đôi tng đa ve.
 update(Graphics g)
c goi môt cach t đông bi phng thc ‘repaint()’.
Phng thc nay se xoa nhng đôi tng đa ve, va truyên no cho đôi tng cua lp
Graphics đê goi phng thc ‘paint()’;
 paint(Graphics g)
c goi bi phng thc update().

ôi tng đc truyên cho phng thc nay đc dung đê ve. Phng thc nay dung
đê ve cac hinh anh đô hoa khac nhau.

Viêc goi phng thc paint() lp đi lp lai thông qua phng thc repaint() se xoa đi cac
hinh đa ve trc đo. ê ve cac hinh mi ma vân gi lai nhng hinh đa ve trc đo, chung
ta cân override lai phng thc upate().

Public void update (Graphics g)
{

paint (g);
}

 đây, phng thc update() se không xoa nhng đôi tng đa ve, nhng chi goi phng
thc paint(). ê lam đc điêu nay, no truyên đôi tng cua lp Graphics hoc
GraphicsContext cho phng thc paint().  đây, đôi tng cua lp Graphics la ‘g’.

6.5.1 Ve cac chuôi, cac ky t va cac byte

Chng trinh sau minh hoa cac ve cac chuôi, ky t va cac byte.
ê ve hoc in môt chuôi, lp Graphics cung câp phng thc ‘drawString()’. Cu phap
nh sau:

DrawString (String str, int xCoor, int yCoor);

Ba tham sô la:
 Chuôi cân ve.
 Toa đô X trên frame, ni chuôi cân đc ve.
 Toa đô Y trên frame, ni chuôi cân đc ve.
10

ê ve hoc xuât cac ky t trên frame, lp Graphics cung câp phng thc ‘drawChars’.
Cu phap nh sau:

DrawChars (char array[], int offset, int length, int xCoor, int yCoor);

Chu thich cac tham sô:
 Mang cac ky t.
 Vi tri bt đâu, ni cac ky t đc ve.
 Sô cac ky t cân đc ve.

 Toa đô X, ni cac ky t cân đc ve.
 Toa đô Y, ni cac ky t cân đc ve.

Lp Graphics cung câp phng thc ‘drawBytes()’ đê ve hoc in cac byte ra frame. Cu
phap cua phng thc nay nh sau:

DrawBytes (byte array[], int offset, int length, int xCoor, int yCoor);

5 tham sô cua phng thc trên la:

 Mang cac byte.
 Vi tri offset hay vi tri bt đâu.
 Sô byte cân ve.
 Toa đô X.
 Toa đô Y.

ôi vi môt ky t hoc môt mang cac byte, chung ta co thê in môt phân cua mang ma
thôi.  đây, toa đô x va y la toa đô tinh theo dong. Chng trinh 6.4 minh hoa cach ve
chuôi, cac ky t va cac byte.

Chng trinh 6.4

import java.awt.*;
public class DrawStrings extends Frame
{
public DrawStrings()
{
super ("Draw strings, characters, bytes");
setSize (300, 300);
setVisible (true);

}
public void paint(Graphics g)
{
g.drawString ("Good Morning", 50, 50);
g.drawString ("Good Afternoon", 50, 75);
g.drawString ("Good Night", 50, 100);

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×