You are on page 1of 25

1

Chng 6 Applets

Sau khi ket thuc chng nay, ban co the nam c cac noi dung sau:
Sau khi hoc xong chng nay, ban co th nm c cac ni dung sau:
Hiu c cac Applet cua Java
Phn bit applet va cac ng dung application
Tim hiu chu trinh sng cua mt applet
Tao cac applet
Hin thi cac hinh anh s dung applet
Truyn tham s cho applet
Tim hiu ng dung cua applet trong GUI

6.1 Java Applet

Applet la mt chng trinh Java co th chay trong trinh duyt web. Tt ca cac applet u
la cac lp con cua lp Applet.
Lp Applet thuc package java.applet. Lp Applet bao gm nhiu phng thc iu
khin qua trinh thc thi cua applet. tao applet, ban cn import hai goi sau:
java.applet
java.awt

6.2 Cu truc cua mt Applet

Mt Applet inh nghia cu truc cua no t 4 s kin xay ra trong sut qua trinh thc thi.
i vi mi s kin, mt phng thc c goi mt cach t ng. Cac phng thc nay
c minh hoa trong bang 6.1
iu quan trong la khng phai luc nao applet cung bt u t ban u. Ma no bt u t
vi tri tip theo cua qua trinh thc thi trc o.
Ngoai nhng phng thc c ban nay, con co nhng phng thc paint() va repaint().
Phng thc paint() dung hin thi mt ng thng (line), text, hoc mt hinh anh
trn man hinh. i s cua phng thc nay la i tng cua lp Graphics. Lp nay thuc
goi java.awt. Cu lnh sau c dung import lp Graphics:

import java.awt.Graphics;

Phng thc Chc nng
init() c goi trong qua trinh khi tao applet. Trong qua trinh khi tao, no
se tao i tng cung cp cho applet. Phng thc nay c dung
tai cac hinh anh hoa, khi tao cac bin va tao cac i tng.
start() c goi goi khi mt applet bt u thc thi.
Mt khi qua trinh khi tao hoan tt, thi applet c khi ng.
Phng thc nay c dung khi ng lai applet sau khi no a
ngng trc o
stop() c goi khi ngng thc thi mt applet. Mt applet bi ngng trc
khi no bi huy.
2
destroy() c dung huy mt applet. Khi mt applet bi huy, thi b nh, thi
gian thc thi cua vi x ly, khng gian ia c tra v cho h thng.
Bang 6.1: cac phng thc cua mt applet
Phng thc repaint() c dung khi ca s cn cp nht lai. Phng thc nay chi cn
mt thng s. Tham s nay la i tng cua lp Graphics.

Applet s dung phng thc showStatus() hin thi thng tin trn thanh trang thai.
Phng thc co tham s thuc kiu d liu String. ly cac thng tin cua applet, user
co th overide phng thc getAppletInfo() cua lp Applet. Phng thc nay tra v 1
i tng kiu String.

Cac phng thc cua applet init(), start(), stop(), destroy(), va paint() c tha k t
mt applet. Nhng mc inh nhng phng thc nay khng thc thi mt thao tac nao ca.
y la vi du n gian cua applet. Cu lnh sau tao mt lp co tn la Applet1, lp nay se
k tha tt ca cac phng thc va bin cua lp applet.

public class Applet1 extends Applet

Phng thc init() va paint() thng c dung thc hin mt s ham khi tao va
ve applet. Phng thc g.drawstring() chi ra vi tri ma oan vn ban c ve u trn
man hinh.

Chng trinh 6.1 hin thi mt chui dong 70 va ct 80:

Chng trinh 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());
//Hin thi mt chui c tra v t ham getAppletInfo() trn thanh trang
thai
}
public String getAppletInfo() //user overrides
{
return Created by Aptech;
}
3
}

S dung cu phap sau dich mt Applet:

javac Applet1.java

thc thi mt applet, ta cn tao mt file HTML. File HTML nay s dung the applet.
The applet nay ly tham s u tin la ng dn cua file applet.

The applet co hai thuc tinh sau:

Width
Height

truyn tham s vao applet, s dung param, sau o la the value. Sau y la vi du cua
the applet:

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

Luc nay, ta co th thc thi applet nay bng cach dung trinh xem applet. y la cng cu
cua JDK. chay file HTML trong trinh xem applet, ta go cu lnh sau:

Appletviewer abc.html // abc.html la tn cua file HTML

Mt tuy chon khac cua applet la ta thm the applet nh la mt dong chu thich trong oan
code. Luc o, applet c dich, va thc thi bng cach s dung lnh sau:

Appletviewer Applet1.java

Sau y la kt qua cua chng trinh trn:


4

Hinh 6.1 Applet

6.2.1 S khac nhau giua Application va Applet

Sau y la s khac nhau gia application va applet:
thc thi cac application chung ta dung trinh thng dich Java, trong khi o applet
co th chay c trn cac trinh duyt (co h tr Java) hay s dung cng cu
AppletViewer, cng cu nay i kem vi JDK.
Qua trinh thc thi cua application bt u t phng thc main(). Tuy nhin applet
thi khng lam nh vy.
Cac application s dung System.out.println() hin thi kt qua ra man hinh trong
khi o applet s dung phng thc drawstring() xut ra man hinh.

Mt iu ang lu y la mt chng trinh Java n le thi co th va la application va la
applet. Chc nng cua applet c bo qua khi no c thc thi nh la mt application va
ngc lai.

Chng trinh 6.2 se minh hoa iu nay

Chng trinh 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 bin dich chng trinh, no co th c thc thi nh la mt applet bng cach s
dung cu phap sau:

appletviewer both.java

Kt qua nh sau:

Hinh 6.2 Applet

Nu chay chng trinh trn nh mt application, thi s dung cu phap sau:

java both

Kt qua la:



Hinh 6.3 Application

Khi applet chay trn trinh duyt web, c im nay thc s hu ich khi ban mun tai
applet trong mt frame mi. Vi du: trong applet c tao chat, mt s website s dung
mt ca s chat ring bit chat. Ban cung co th kt hp cac c im cua frame va
applet vao trong mt chng trinh.

6.2.3 Nhng gii han bao mt trn applet

6
Co mt s han ch ma applet khng th lam c. Bi vi cac applet cua Java co th pha
hong toan b h thng cua user. Cac lp trinh vin Java co th vit cac applet xoa file,
ly cac thng tin cac nhn cua h thng
Vi th, cac applet cua java khng th lam cac vic sau:
Khng th oc hoc ghi file trn h thng file cua user.
Khng th giao tip vi cac site internet, nhng chi co th vi cac trang web co applet
ma thi.
Khng th chay bt c chng trinh gi trn h thng cua ngi oc.
Khng th tai bt c chng trinh c lu tr trong h thng cua user.

Nhng gii han trn chi ung khi cac applet c chay trn trinh duyt Netscape
Navigator hoc Microsoft Internet Explorer.

6.3 Chu trinh sng cua mt Applet

Chu trinh sng cua mt Applet c m ta s di y:



Hinh 6.4 Chu trinh sng cua mt applet

Trc tin, applet c tao.
Bc k tip la khi tao. iu nay xay ra khi mt applet c nap. Qua trinh nay bao
gm vic tao cac i tng ma applet cn. Phng thc init() c override cung cp
cac hanh vi khi tao.
Mt khi applet c khi tao, applet se c khi ng. Applet co th khi ng ngay ca
khi no a c ngng trc o. Vi du, nu trinh duyt nhay n mt lin kt nao o
trang khac, luc o applet se bi ngng, va c khi ng tr lai khi user quay v trang
o.

S khac nhau gia qua trinh khi tao va qua trinh khi ng la mt applet co th khi
ng nhiu ln, nhng qua trinh khi tao thi chi xay ra mt ln.

Phng thc start() c override cung cp cac thao tac khi ng cho applet.

Destroy
Stop
Creation
Initalization
Starting
7
Phng thc stop() chi c goi khi user khng con trang o na, hoc trang o a
c thu nho lai di thanh taskbar.

K tip la phng thc destroy(). Phng thc nay giup applet don dep trc khi no
c giai phong khoi vung nh, hoc trc khi truyt duyt kt thuc. Phng thc nay
c dung huy nhng lung (thread) hay qua trinh ang chay.

Phng thc destroy() khac vi phng thc finalize() la phng thc destroy() chi
dung cho applet, trong khi finalize() la cach tng quat don dep applet.

Phng thc paint() cung la mt phng thc quan trong khac. Phng thc nay cho
phep ta hin thi mt cai gi o trn man hinh. Co th la text, ng thng, mau nn, hoc
hinh anh. Phng thc nay xay ra nhiu ln trong sut qua trinh applet tn tai. Phng
thc nay thc thi mt ln sau khi applet c khi tao. No se lp i lp lai khi di chuyn
t ca s trinh duyt sang ca s khac. No cung xay ra khi ca s trinh duyt thay i vi
tri cua no trn man hinh.

Phng thc paint() co mt tham s. Tham s nay la i tng cua lp Graphics. Lp
Graphics thuc lp java.awt, chung ta phai import trong oan code cua applet. Chung ta
co th s dung oan ma sau:

import java.awt.Graphics;

6.4 Truyn tham s cho Applet

Trong chng trinh sau, chung ta se truyn tham s cho applet. Thanh phn nut bNext
co tn c truyn nh la mt tham s. Phng thc init() se kim tra tham s co thn
la mybutton. Sau o, no tao mt nut vi chui o nh la tn cua nut. Nu khng co
tham s truyn vao, nut o co tn mc inh la Default.
By gi chung ta inh nghia the <PARAM> trong oan ma HTML nh sau:

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

Chng trinh 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 kt qua cua chng trinh trn:



Hinh 6.5: truyn tham s cho applet
By gi chung ta se s dung lp Graphics ve cac hinh chng han nh: ng thng,
hinh oval, va hinh ch nht. Chung ta se hoc lp Font trong cac phn sau. Lp nay co th
dung in vn ban bng bt c font nao.

6.5 Lp Graphics

Java cung cp goi AWT cho phep ta ve cac hinh hoa. Lp Graphics bao gm tp hp
rt nhiu phng thc. Nhng phng thc nay c s dung ve bt c hinh nao
trong cac hinh sau:

Oval
Rectangle
Square
Circle
Lines
9
Text

Ban co th ve nhng hinh nay bng bt c mau nao. Frame, Applet va canvas la cac mi
trng hin thi hoa.

ve bt c hinh anh nao chung ta cn phai co nn hoa (Graphical Background).
co c mt nn hoa, chung ta goi phng thc getGraphics() hay bt c phng
thc nao trong cac phng thc sau y:

repaint()
c goi khi cn ve lai nhng i tng a ve.
update(Graphics g)
c goi mt cach t ng bi phng thc repaint().
Phng thc nay se xoa nhng i tng a ve, va truyn no cho i tng cua lp
Graphics goi phng thc paint();
paint(Graphics g)
c goi bi phng thc update().

i tng c truyn cho phng thc nay c dung ve. Phng thc nay dung
ve cac hinh anh hoa khac nhau.

Vic goi phng thc paint() lp i lp lai thng qua phng thc repaint() se xoa i cac
hinh a ve trc o. ve cac hinh mi ma vn gi lai nhng hinh a ve trc o, chung
ta cn override lai phng thc upate().

Public void update (Graphics g)
{
paint (g);
}

y, phng thc update() se khng xoa nhng i tng a ve, nhng chi goi phng
thc paint(). lam c iu nay, no truyn i tng cua lp Graphics hoc
GraphicsContext cho phng thc paint(). y, i tng cua lp Graphics la g.

6.5.1 Ve cac chui, cac ky t va cac byte

Chng trinh sau minh hoa cac ve cac chui, ky t va cac byte.
ve hoc in mt chui, lp Graphics cung cp phng thc drawString(). Cu phap
nh sau:

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

Ba tham s la:
Chui cn ve.
Toa X trn frame, ni chui cn c ve.
Toa Y trn frame, ni chui cn c ve.
10

ve hoc xut cac ky t trn frame, lp Graphics cung cp phng thc drawChars.
Cu phap nh sau:

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

Chu thich cac tham s:
Mang cac ky t.
Vi tri bt u, ni cac ky t c ve.
S cac ky t cn c ve.
Toa X, ni cac ky t cn c ve.
Toa Y, ni cac ky t cn c ve.

Lp Graphics cung cp phng thc drawBytes() ve hoc in cac byte ra frame. Cu
phap cua phng thc nay nh sau:

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

5 tham s cua phng thc trn la:

Mang cac byte.
Vi tri offset hay vi tri bt u.
S byte cn ve.
Toa X.
Toa Y.

i vi mt ky t hoc mt mang cac byte, chung ta co th in mt phn cua mang ma
thi. y, toa x va y la toa tinh theo dong. Chng trinh 6.4 minh hoa cach ve
chui, cac ky t va cac byte.

Chng trinh 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);
11
char ch[] = {};
}
public static void main (String args[])
{
new DrawStrings();
}
}

Chng trinh trn ve chui, ky t t mt mang ky t, va ve cac byte t mang cac byte.
Ban phai import goi java.awt s dung cac phng thc hoa co sn trong goi nay.
Ta phai lam iu nay vi lp Graphics nm trong goi nay.

Sau y la kt qua cua chng trinh trn:


Hinh 6.6 Strings, characters va bytes

6.5.2 Ve ng thng (Line) va Oval

Sau y la cu phap cua cac phng thc c s dung ve ng thng va hinh oval:

drawLine (int x1, int y1, int x2, int y2);
drawOval (int xCoor, int yCoor, int width, int height);
setColor (Color c);
fillOval (int xCoor, int yCoor, int width, int height);

Phng thc drawLine() nhn cac tham s sau:

Toa X, ni bt u ve (x1).
Toa Y, ni bt u ve (y1).
Toa X, ni kt thuc ve (x2).
Toa Y, ni kt thuc ve (y2).

Phng thc nay bt u ve tai toa x1 va y1, va kt thuc tai toa x2 va y2.
ve nhng ng thng co mau, chung ta thit lp mt mau nao o. Phng thc
setColor dung thit lp mau cho hinh anh hoa. Trong chng trinh nay, chung ta
s dung cu lnh sau chon mau xanh:
12

g.setColor (Color.blue);

Phng thc drawOval() nhn 4 thng s sau:

Toa X.
Toa Y.
Chiu rng cua hinh Oval.
Chiu cao cua hinh Oval.

i vi hinh oval rng, thi gia tri cua chiu rng ln hn chiu cao, va ngc lai i vi
hinh oval cao.

Phng thc fillOval() nhn 4 thng s, nhng no se t hinh oval. S dung phng
thc setColor t hinh oval;

g.setColor(Color.cyan);

y, hinh oval se c t vi mau cyan. Lp Color cung cp cac mau khac nhau ma h
thng co h tr.

6.5.3 Ve hinh ch nht (Rectangle) va hinh ch nht bo goc (Rounded
Rectangle)

Sau y la cu phap cua cac phng thc c dung ve hinh ch nht va hinh ch nht
bo goc:

drawRect (int xCoor, int yCoor, int width, int height);
fillRect (int xCoor, int yCoor, int width, int height);
drawRoundRect (int xCoor, int yCoor, int width, int height, int arcwidth, int
archeight);
fillRoundRect (int xCoor, int yCoor, int width, int height, int arcwidth, int archeight);

Phng thc drawRect() c dung ve hinh ch nht n gian. Phng thc nay
nhn 4 tham s sau:

Toa X
Toa Y
Chiu rng cua hinh ch nht
Chiu cao cua hinh ch nht

Phng thc nay ve hinh ch nht co chiu rng va chiu cao cho trc, bt u tai toa
X, Y. Chung ta co th thit lp mau cua hinh ch nht. y, chung ta chon mau o.
Cu lnh se nh sau:

g.setColor (Color.red);
13

Phng thc drawRoundRect() ve hinh ch nht co cac goc tron. Phng thc nay
nhn 6 tham s, trong o 4 tham s u thi ging vi phng thc drawRect. Hai tham s
khac la:

arcwidth cua hinh ch nht
archeight cua hinh ch nht

y, arcwidth lam tron goc trai va goc phai cua hinh ch nht. archeight lam tron
goc trn inh va goc ay cua hinh ch nht. Vi du, arcwidth = 20 co nghia la hinh ch
nht c lam tron canh trai va canh phai mi canh 10 pixel. Tng t, archeight = 40 se
tao ra hinh ch nht c lam tron t inh n ay 20 pixel.

Pixel la n vi o. No la n vi nho nht trong vung ve.

t hay ve hinh ch nht va hinh ch nht bo goc, chung ta s dung phng thc
fillRect() va fillRoundRect(). Nhng phng thc nay nhn cac tham s ging vi
phng thc drawRect() va drawRoundRect(). Nhng phng thc nay ve cac hinh anh
vi mt mau cho trc hoc mi mau hin hanh. Lnh sau dung ve hinh vi mau
xanh:

g.setColor(Color.green);

6.5.4 Ve hinh ch nht 3D va ve hinh cung (Arc)

Sau y la cu phap cua cac phng thc dung ve hinh ch nht 3D va hinh cung:

draw3Drect (int xCoord, int yCoord, int width, int height, boolean raised);
drawArc(int xCoord, int yCoord, int width, int height, int arcwidth, int archeight);
fillArc(int xCoord, int yCoord, int width, int height, int arcwidth, int archeight);

Phng thc draw3Drect() nhn 5 tham s. 4 tham s u thi tng t vi phng thc
ve hinh ch nht. Tuy nhin, gia tri cua tham s th 5 quyt inh la hinh ch nah6t
nay co 3 chiu hay khng. Tham s th 5 co kiu d liu la Boolean. Gia tri nay True co
nghia la hinh ch nht la 3D.

Phng thc drawArc() nhn 6 tham s sau:

Toa x
Toa y
Chiu rng cua cung c ve.
Chiu cao cua cung c ve.
Goc bt u.
rng cua cung so vi goc ban u.

14
Phng thc fillArc() cung nhn 6 tham s ging nh phng thc drawArc(), nhng
no ve cung va t cung vi mau hin thi.

6.5.5 Ve hinh PolyLine

Chng trinh sau ly cac im t hai mang ve mt loat cac ng thng.

Cu phap cua phng thc nay nh sau:

drawPolyline (int xArray[], int yArray[], int totalPoints);
g.setFont (new Font(Times Roman, Font.BOLD, 15));

Phng thc drawPolyline() nhn 3 tham s sau:

Mang lu tr toa x cua cac im.
Mang lu tr toa y cua cac im.
Tng s im cn ve.

ve cac ng thng ta ly cac im t hai mang nh sau:

(array1[0], array2[0]) (array1[1], array2[1]) (array1[2], array2[2]).

S ng thng ve c lun nho hn s truyn vao thng s th 3 cua phng thc
drawPoyline(). Vi du nh: totalPoints - 1

Chng trinh 6.5 minh hoa cac ve polyline.

Chng trinh 6.5

import java.awt.*;

class PolyLines extends Frame
{
int x1[] = {50, 75, 95, 115, 135};
int y1[] = {50, 30, 60, 75, 60};
int x2[] = {67, 82, 95, 120, 135};
int y2[] = {150, 130, 160, 155, 180};

public PolyLines()//constructor
{
super ("Poly Lines");
setSize (300, 300);
setVisible (true);
}
public void paint (Graphics g)
{
15
g.drawPolyline (x1, y1, 5);
g.setFont (new Font("Times Roman", Font.BOLD, 15));
g.drawString("Current Color is black", 100, 100);
g.setColor(Color.blue);
g.drawPolyline (x2, y2, 5);
g.drawString ("Current Color is blue", 100, 200);
}
public static void main (String args[])
{
new PolyLines();
}
}

Kt qua cua chng trinh c minh hoa hinh 6.7




6.5.6 Ve va t a giac (Polygon)

Lp Graphics cung cp hai phng thc ve a giac. Phng thc u tin nhn mt
i tng cua lp Polygon. Phng thc thc 2 ly hai mang im, va tng s im cn
ve. Chung ta se s dung phng thc 2 ve a giac.

Cu phap cua drawPolygon() nh sau:
drawPolygon(int x[], int y[], int numPoints);

Cu phap cua fillPolygon() nh sau:
fillPolygon (int x[], int y[], int numPoints);

Chng trinh di y ly cac im t 2 mang ve a giac. Phng thc
drawPolygon() nhn 3 tham s sau ging nh phng thc drawPolyline()

16
Mang lu tr toa x cua cac im.
Mang lu tr toa y cua cac im.
Tng s im cn ve.

Chng trinh 6.6

import java.awt.*;
class PolyFigures extends Frame
{
int x1[] = {50, 25, 40, 100, 80};
int x2[] = {80, 30, 50, 150, 100, 170};
int y1[] = {50, 70, 120, 120, 80};
int y2[] = {150, 170, 200, 220, 240,190};

public PolyFigures()
{
super ("Poly figures");
setSize(300, 300);
setVisible (true);
}
public void paint (Graphics g)
{
g.drawPolygon (x1, y1, 5);
g.setColor (Color.cyan);
g.fillPolygon (x2, y2, 6);
}
public static void main (String args[])
{
new PolyFigures();
}
}

Sau y la kt qua cua chng trinh trn:

17


Hinh 6.8 Polygon

6.8 iu khin mau

Trong Java, chung ta iu khin mau bng cach dung 3 mau chinh la o (red), xanh la cy
(green), xanh dng (blue). Java s dung m kiu mau RGB. i tng cua lp Color
cha 3 s nguyn cho cac tham s red, green, blue. Bang sau trinh bay gia tri co th co
cua cac mau o:

Thanh phn Phamvi
Red 0-255
Green 0-255
Blue 0-255

Bang 6.2 Pham vi gia tri cua cac thanh phn mau

S dung cac gia tri trn tao ra mt mau tuy thich. Cu phap cua ham dng tao ra mt
mau nh sau:

color (int red, int green, int blue);

Bang sau hin thi cac gia tri cua cac mau thng gp:

Mau Red Green Blue
White 255 255 255
Light Gray 192 192 192
Gray 128 128 128
Dark Gray 64 64 64
Black 0 0 0
Pink 255 175 175
18
Orange 255 200 0
Yellow 255 255 0
Magenta 255 0 255

Bang 6.3 Cac gia tri RGB

Cac i tng mau khac nhau co th c tao bng nhng gia tri nay. Nhng i nay co
th c dung ve hoc t cac i tng hoa. Vi du, tao mau hng, ta dung lnh
sau:

color c = new Color (255, 175, 175);

Ta co th thit lp mau bng cach dung lnh sau:

g.setColor (c); //g la i tng cua lp Graphics

S dung kt hp cac gia tri RGB tao ra mt mau tuy y. cho d hn, lp Color cung
cp sn mt s mau.

color.white color.black
color.orange color.gray
color.lightgray color.darkgray
color.red color.green
color.blue color.pink
color.cyan color.magenta
color.yellow
Bang 6.4 Cac mau thng gp
oan ma sau minh hoa cach tao mt mau tuy y:

Color color1 = new Color (230, 140, 60);
Color color4 = new Color (90, 210, 130);
g.setColor (color1);
int myred = color1.getRed ();
int mygreen = color1.getGreen ();
int myblue = color1.getBlue();
color1 = color1.darker();
color4 = color4.brighter();

6.7 iu khin Font

Java cung cp lp Font trong goi java.awt cho phep s dung cac loai font khac nhau. Lp
nay bao gm mt s phng thc.

s dung font, chung ta nn kim tra xem h thng co h tr hay khng. Phng
thcgetAllFont() tra v tt ca cac font ma h thng h tr.

19
Trc tin, khai bao mt i tng cua lp GraphicsEnvironment nh sau:

Graphicenvironment ge;

ge = GraphicsEnvironment.getLocalGraphicsEnvironment ();

i tng nay s dung cu phap sau ly tt ca cac font co trong mang Font:

Font f[] = ge.getAllFonts();

Phng thc getAllFont() c s dung y. Phng thc getAllFont() thuc lp
GraphicsEnvironment. y la lp tru tng, do o ta khng th khi tao lp nay.
truy cp phng thc getAllFont(), chung ta s dung phng thc
getLoacalGraphicsEnvironment() cua lp GraphicsEnvironment.

ge = GraphicsEnvironment.getLocalGraphicsEnvironment ();

Tham chiu n lp nay c gan cho bin ge. Bin nay goi phng thc getAllFont().
Chung ta s dung cac font khac nhau hin thi cac chui khac nhau. Phng thc
getFont() tra v font mc inh dung hin thi chui, khi khng co chon font nao ca.

Font defaultFont = g.getFont (); //g la i tng Graphics
g.drawString (Default Font is , 30, 50);

Dialog la font mc inh cua h thng.

thay i font mc inh cua h thng thanh font khac, chung ta tao i tng cua lp
Font. Ham dng cua Font ly 3 tham s sau:

Tn cua font. Ta co th ly tn thng qua phng thc getFontList().
Kiu cua font. Vi du: Font.BOLD, Font.PLAIN, Font.ITALIC.
Kich thc font.

Cu phap sau minh hoa nhng thng s trn:

Font f1 = new Font (SansSerif, Font.ITALIC, 16);
g.setFont (f1);

Ba tham s c truyn y la: SanSerif tn cua font, Font.BOLD kiu font, 14 la
kich thc cua font. Nhng thng s nay tao ra i tng f1. Chung ta co th kt hp 2
kiu font lai vi nhau. Hay xet vi du sau:

Font f3 = new Font (Monospaced, Font.ITALIC+Font.BOLD, 20);

y kiu font cua f3 va m, va nghing.

20
6.8 Lp FontMetrics

Lp nay xac inh kich thc cua cac ky t khac nhau thuc cac loai font khac nhau. Xac
inh kich thc bao gm chiu cao (height), baseline, descent, va leading. iu nay rt
cn thit vi cac ky t khi in u chim mt kich thc ring. Ban cn tinh kich thc cn
thit khi in cac ky t tranh cac ky t ghi e ln nhau.

Height: chiu cao cua font.
Baseline (Dong c s): xac inh c s cua cac ky t (khng k phn thp nht cua ky
t)
Ascent: khoang cach t ng baseline n inh cua ky t.
Descent: khoang cac t baseline ay cua ky t.
Leading: khoang cach gia cac dong ch in.

Chng trinh 6.7 minh hoa vic s dung cac phng thc khac nhau ma lp FontMetrics
co. Trong chng trinh nay, chung ta s dung cac phng thc khac nhau xem xet chi
tit cac loai font khac nhau. Lp FontMetric la lp tru tng. Phng thc
getFontMetrics() co tham s la i tng cua lp Font, vi FontMetrics i i vi mt font
nao o.

FontMetrics fm = g.getFontMetrics (f1);

Lnh nay tao i tng fm cua lp FontMetrics, cung vi i tng f1. By gi, chung ta
s dung fm ly chi tit cua font.

Cac phng thc getHeight, getAscent(), getDescent(), va getLeading() tra v chi tit cua
font. Phng thc getFont() cua lp FontMetrics tra v Font ma kt hp vi i tng
cua lp FontMetrics. Phng thc getName() cua lp Font tra v tn Font.

Chng trinh 6.7

import java.awt.*;

class FontMetricsUse extends Frame
{
public FontMetricsUse()
{
super ("Detail oc Fonts");
setSize (400, 300);
setVisible(true);
}

public void paint (Graphics g)
{
Font f1 = new Font ("Times Roman", Font.PLAIN, 22);
FontMetrics fm = g.getFontMetrics (f1);
21
String name = fm.getFont().getName();
g.drawString ("Details of Font " + name, 30, 50);
g.drawString ("Leading: " + String.valueOf (fm.getHeight()), 50, 75);
g.drawString ("Leading: " + String.valueOf (fm.getAscent()), 50, 100);
g.drawString ("Leading: " + String.valueOf (fm.getDescent()), 50, 125);
g.drawString ("Leading: " + String.valueOf (fm.getLeading()), 50, 150);

Font f2 = new Font ("DialogInput", Font.PLAIN, 22);
fm = g.getFontMetrics (f2);
name = fm.getFont().getName();
g.drawString ("Details of Font " + name, 30, 175);
g.drawString ("Leading: " + String.valueOf (fm.getHeight()), 50, 200);
g.drawString ("Leading: " + String.valueOf (fm.getAscent()), 50, 225);
g.drawString ("Leading: " + String.valueOf (fm.getDescent()), 50, 250);
g.drawString ("Leading: " + String.valueOf (fm.getLeading()), 50, 275);
}
public static void main (String args[])
{
new FontMetricsUse ();
}
}

Kt qua cua chng trinh trn:




Hinh 6.9 Lp FontMetrics

Chng trinh 6.8 minh hoa cach lp FontMetrics c s dung in oan vn ban nhiu
font, nhiu dong. Trong chng trinh nay, chung ta cn in vn ban nhiu font trn nhiu
22
dong. Lp FontMetrics giup ta xac inh khoang cach cn thit in mt dong vn ban
cho mt font nao o. iu nay tht cn thit, bi vi dong th 2 c in ngay sau dong th
nht.

Trc tin chung ta in msg1 s dung font Monospaced. Sau o, chung ta xut msg2 s
dung font iaglogInput. lam c iu nay, chung ta cn tinh khong cach cn thit
xut msg1. Phng thc stringWidth() cua lp FontMetrics c dung tinh ra tng
khoang cach cn thit xut msg1. khi chung cng thm khoang cach nay vao bin x,
chung ta se ly c vi tri ma chung ta bt u in oan vn ban k tip, msg2. Phng
thc setFont() c dung thit lp font in vn ban.

K o, chung ta xut msg1 va msg2 trn cac dong khac nhau s dung chung 1 font
Monospaced. y, chung ta cn bit khoang cach chiu cao cua font, in dong k
tip. Phng thc getHeight() c dung lam iu nay.

Chng trinh 6.8

import java.awt.*;
class MultiFontMultiLine extends Frame
{
public MultiFontMultiLine()
{
super ("Multiline Text");
setSize (450, 200);
setVisible (true);
}

public void paint (Graphics g)
{
Font f1 = new Font ("MonoSpaced", Font.BOLD, 18);
Font f2 = new Font ("DialogInput", Font.PLAIN, 14);

int x = 20;
int y = 50;
String msg1 = "Java Language";
String msg2 = "A new approach to programming";

FontMetrics fm = g.getFontMetrics(f1);
g.setFont(f1);
g.drawString (msg1, x, y);
x = x + fm.stringWidth(msg1);
g.setFont(f2);
g.drawString (msg2, x, y);
g.setFont(f1);
y = 100;
x = 20;
23
int height = fm.getHeight();
g.drawString (msg1, x, y);
y += height;
g.drawString (msg2, x, y);
}
public static void main (String args[])
{
new MultiFontMultiLine ();
}
}

Kt qua cua chng trinh trn:



Hinh 6.10 Vn ban c xut nhiu font, nhiu dong

6.9 Chon mode ve

Cac i tng c ve bng cach s dung mode ve. Khi mt i tng mi c ve, no
se e ln cac hinh a ve trc y. Tng t, khi cac i tng c ve i ve lai nhiu
ln thi chung se xoa cac i tng a ve trc o. Chi hin thi ni dung cua i tng
mi. lam cho ni dung cu va ni dung mi u hin thi trn man hinh, lp Graphics
cung cp phng thc setXORMode (Color c);

Chng trinh 6.9 minh hoa tin li cua cua vic s dung phng thc setXORMode().
y, chung ta s dung phng thc setXORMode() t cac hinh hoa khac nhau, ma
khng e ln cac hinh khac. Kt qua la, khi s dung mode XOR thi hin nhin la tt ca
cac hinh u hin thi y u. iu nay co nghia la cac hinh mi khng e ln cac hinh cu.
Thay vao o, phn chung gia cac hinh se c hin thi thanh mt mau khac. Nhng khi
khng s dung mode XOR, hinh mi hoan toan che khut nhng hinh trc o.

Chng tirnh 6.9

import java.awt.*;
class PaintMode extends Frame
{
public PaintMode()
24
{
super ("Paint Mode");
setSize (300, 300);
setVisible (true);
}
public void paint (Graphics g)
{
g.setPaintMode ();
g.setColor (Color.blue);
g.fillRect (50,50,40, 30);
g.setColor (Color.pink);
g.fillOval (70, 65, 30, 60);
g.setColor (Color.cyan);
g.fillRoundRect (90, 80, 70, 50, 20, 30);
g.setColor (Color.blue);
g.fillRect (50, 150, 40, 30);
g.setXORMode (Color.yellow);
g.fillOval (70, 165, 30, 60);
g.setXORMode (Color.magenta);
g.fillRoundRect (90, 180, 60, 40, 50, 20);
}

public static void main (String args[])
{
new PaintMode();
}
}

Kt qua cua chng trinh trn:



Hinh 6.11 Paint mode
25

Tom tt
Applet la chng trinh Java chay trong trinh duyt web.
Chng trinh Java n le co th va la applet, va la application.
Lp Graphics nm trong goi AWT, bao gm cac phng thc c s dung ve cac
hinh hoa nh oval, hinh ch nht, hinh vung, hinh tron, ng thng va vn ban.
Java s dung bang mau RGB.
Lp Font trong goi java.awt cho phep s dung nhiu font khac nhau.
Lp FontMetrics xac inh kich thc cua cac ky t.

You might also like