Tài liệu JAVA-6 pptx

25 417 0
Tài liệu JAVA-6 pptx

Đ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

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);

Ngày đăng: 12/12/2013, 11:15

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

  • Đang cập nhật ...

Tài liệu liên quan