lap trinh java JAVA chuong 6

25 305 0
lap trinh java JAVA chuong 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

tong hop lap trinh java chi tiet, ro, de hieu cho nhung nguoi dang muon hoc lap trinh java, do minh tim tren internet

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. Destro y S to p Creation Initalization Startin g 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); [...]... (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(); } } Kêt qua cua ch ng trinh trên: Hinh 6. 11 Paint mode 24 Tom t t Applet la ch ng trinh Java chay trong trinh duyêt web Ch ng trinh Java n le co thê v a la applet, v a la application L p Graphics... sô truyên vao thông sô th 3 cua ph drawPoyline() Vi du nh : totalPoints - 1 Ch ng trinh 6. 5 minh hoa cac ve polyline Ch ng th c ng 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,... g.fillPolygon (x2, y2, 6) ; } public static void main (String args[]) { new PolyFigures(); } } Sau ây la kêt qua cua ch ng trinh trên: 16 Hinh 6. 8 Polygon 6. 8 iêu khiên mau Trong Java, chung ta iêu khiên mau b ng cach dung 3 mau chinh la o (red), xanh la cây (green), xanh d ng (blue) Java s dung mô kiêu mau RGB ôi t ng cua l p Color ch a 3 sô nguyên cho cac tham sô red, green, blue Bang sau trinh bay gia tri... void main (String args[]) { new DrawStrings(); } } Ch ng trinh trên ve chuôi, ky t t môt mang ky t , va ve cac byte t mang cac byte Ban phai import goi java. awt ê s dung cac ph ng th c ô hoa co s n trong goi nay Ta phai lam iêu nay vi l p Graphics n m trong goi nay Sau ây la kêt qua cua ch ng trinh trên: Hinh 6. 6 Strings, characters va bytes 6. 5.2 Ve ng th ng (Line) va Oval Sau ây la cu phap cua cac... color.yellow Bang 6. 4 Cac mau th ng g p oan ma sau minh hoa cach tao môt 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 iêu khiên Font Java cung câp l p Font trong goi java. awt cho phep... String.valueOf (fm.getLeading()), 50, 275); } public static void main (String args[]) { new FontMetricsUse (); } } Kêt qua cua ch ng trinh trên: Hinh 6. 9 L p FontMetrics Ch ng trinh 6. 8 minh hoa cach l p FontMetrics c s dung ê in oan v n ban nhiêu font, nhiêu dong Trong ch ng trinh nay, chung ta cân in v n ban nhiêu font trên nhiêu 21 dong L p FontMetrics giup ta xac inh khoang cach cân thiêt ê in môt dong... phap cua fillPolygon() nh sau: fillPolygon (int x[], int y[], int numPoints); Ch ng trinh d i ây lây cac iêm t 2 mang ê ve a giac Ph ‘drawPolygon()’ nhân 3 tham sô sau giông nh ph ng th c drawPolyline() ng th c 15 Mang l u tr toa ô x cua cac iêm Mang l u tr toa ô y cua cac iêm Tông sô iêm cân ve Ch ng trinh 6. 6 import java. awt.*; class PolyFigures extends Frame { int x1[] = {50, 25, 40, 100, 80}; int... ch nah6t nay co 3 chiêu hay không Tham sô th 5 co kiêu d liêu la Boolean Gia tri nay True co nghia la hinh ch nhât la 3D Ph ng th c ‘drawArc()’ nhân 6 tham sô sau: Toa ô x Toa ô y Chiêu rông cua cung c ve Chiêu cao cua cung c ve Goc b t âu ô rông cua cung so v i goc ban âu 13 Ph ng th c ‘fillArc()’ cung nhân 6 tham sô giông nh ph no ve cung va tô cung v i mau hiên th i ng th c drawArc(), nh ng 6. 5.5... 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(); } } Kêt qua cua ch ng trinh c minh hoa hinh 6. 7 6. 5 .6 Ve va tô a giac (Polygon) L p Graphics cung câp hai ph ng th c ê ve a giac Ph ng th c âu tiên nhân môt ôi t ng cua l p Polygon Ph ng th c th c 2 lây hai mang iêm, va tông sô iêm cân ve... getHeight() c dung ê lam iêu nay Ch ng 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 = . 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. 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

Ngày đăng: 13/02/2014, 13:07

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan