Trình bày FlowLayout

Một phần của tài liệu Lập trình hướng đối tượng Java PTIT (Trang 136)

L P TRÌNH GIAO DIN TRÊN JAVA

6.3.1 Trình bày FlowLayout

Cách trình bày Flow Layout s x p các đ i t ng trên m t h ng theo dòng. N u đ i t ng m i thêm không đ ch (chi u r ng) thì nó s t đ ng thêm vào đ u dòng m i. Các ph ng th c:

• FlowLayout(): Kh i t o đ i t ng trình bày.

• FlowLayout(int): Kh i t o đ i t ng trình bày v i cách c n l xác đnh.

• FlowLayout(int, int, int): Kh i t o v i ba tham s : Th nh t là cách c n l , th hai là kho ng cách gi a hai dòng (chi u cao), th ba là kho ng cách gi a hai đ i t ng (chi u ngang).

Tham s c n l có th nh n m t trong ba giá tr :

• FlowLayout.LEFT: C n l trái, là giá tr m c đnh. • FlowLayout.CENTER: C n l gi a.

• FlowLayout.RIGHT: C n l ph i.

Ch ng trình 6.12 minh ho cách trình bày flow layout: T o ra m t dãy 10 nút nh n và g n vào m t frame theo ki u flow layout.

Ch ng trình 6.12

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

public class FlowLayoutDemo{

public static void main(String[] args) { // Khai báo và kh i t o frame có tiêu đ

Frame myFrame = new Frame(“Frame has somes buttons!”); myFrame.setSize(300,150); // nh kích c frame

myFrame.setLayout(new FlowLayout( ));// Thi t l p cách trình bày

// Khai báo và kh i t o button for(int i=0; i<10; i++)

myFrame.add(new Button(“Click”+i));// G n vào frame myFrame.setVisible(true); // Hi n th frame }

}

Hình 6.11: K t qu demo Flow layout

6.3.2 Trình bày Grid Layout

Cách trình bày Grid Layout s s p x p các đ i t ng theo d ng b ng, đ c xác đnh s hàng và s c t. Ph ng th c c b n:

• GridLayout(int, int): Kh i t o m t đ i t ng trình bày. Hai tham s đ u vào l n l t là s hàng và s c t c a grid trình bày.

• GridLayout(int, int, int, int): Kh i t o m t đ i t ng trình bày, hai tham s đ u xác

đnh s hàng và s c t trình bày. Hai tham s sau xác đnh kho ng cách gi a các dòng và các c t c a b ng.

L u ý:

• Khi s l ng đ i t ng đ c chèn nhi u h n vào frame, ta mu n ch ng trình t tính s hàng, ho c t tính s c t hi n th , thì ta đ tham s t ng ng là 0.

Ví d :

setLayout(new GridLayout(3,0));

setLayout(new GridLayout(0,2));

s c đnh s c t là 2, s dòng là m m d o theo s các đ i t ng trong frame.

Ch ng trình 6.13 minh ho cách trình bày grid layout: T o ra m t dãy 10 nút nh n và g n vào m t frame theo ki u grid layout.

Ch ng trình 6.13

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

public class GridLayoutDemo{

public static void main(String[] args) { // Khai báo và kh i t o frame có tiêu đ

Frame myFrame = new Frame(“Frame has somes buttons!”); myFrame.setSize(300,150); // nh kích c frame

myFrame.setLayout(new GridLayout(0,2));// Thi t l p cách trình bày

// Khai báo và kh i t o button for(int i=0; i<10; i++)

myFrame.add(new Button(“Click”+i));// G n vào frame myFrame.setVisible(true); // Hi n th frame }

}

Hình 6.12: K t qu demo Grid layout

6.3.3 Trình bày Border Layout

Cách hi n th Border Layout s chia frame thành 5 vùng c đnh và t đ ng kéo dãn các vùng sao cho chi m h t b m t c a frame:

• West: Vùng phía tây, t c là phía l bên trái. • East: Vùng phía đông, t c là phía l bên ph i. • North: Vùng phía b c, t c là phía l trên. • South: Vùng phía nam, t c là phía l d i. • Center: Vùng trung tâm, chính gi a frame. Ph ng th c c b n c a l p BorderLayout:

• BorderLayout(): Kh i t o m t đ i t ng trình bày theo cách border.

Khi m t frame đ c trình bày theo cách border, ta có th dùng ph ng th c sau đ g n các đ i t ng vào các vùng c a frame:

< i t ng frame>.add(<Vùng border>, < i t ng component>); Ví d :

myFrame.add(“Center”, new Button(“Click”));

s gán vào vùng trung tâm c a myFrame m t nút nh n có tên là “Click”.

L u ý:

• Cách trình bày border luôn chia frame thành 5 vùng xác đnh.

• N u g n nhi u đ i t ng vào cùng m t vùng, ch có đ i t ng g n sau là nhìn th y đ c. • N u mu n trong m t vùng ch a đ c nhi u đ i t ng, ta có th g n vào m i vùng m t

Panel. Sau đó trong panel, ta ch n cách trình bày riêng cho panel và g n các đ i t ng vào panel.

Ch ng trình 6.14 minh ho cách trình bày border: Ta s g n vào n m vùng c a frame n m nút nh n khác nhau.

Ch ng trình 6.14

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

public class BorderLayoutDemo{

public static void main(String[] args) { // Khai báo và kh i t o frame có tiêu đ

Frame myFrame = new Frame(“Frame has somes buttons!”);

myFrame.setSize(300,150); // nh kích c frame myFrame.setLayout(new BorderLayout()); // nh cách trình bày

// Khai báo và kh i t o button

myFrame.add(“West”, new Button(“West”)); // G n vào vùng west myFrame.add(“East”, new Button(“East”)); // G n vào vùng east myFrame.add(“North”, new Button(“North”)); // G n vào vùng north myFrame.add(“South”, new Button(“South”)); // G n vào vùng south // G n vào vùng center

myFrame.add(“Center”, new Button(“Center”));

myFrame.setVisible(true); // Hi n th frame }

}

6.3.4 Trình bày GridBag Layout

Cách trình bày GridBag Layout c ng trình bày các đ i t ng t ng t nh Grid Layout: Các đ i t ng s đ c đnh v theo v trí các ô (cell) c a m t khung l i (grid). Tuy nhiên, GridBag cho phép ta đnh kích th c c a đ i t ng s chi m bao nhiêu ô và s đ c đ t v trí nào trong khung l i. Các ph ng th c c b n:

• GridBagLayout(): Kh i t o m t đ i t ng trình bày theo cách gridbag.

• setConstraints(Component, GridBagConstraints): t v trí và kích th c c a đ i t ng component theo các ràng bu c trong gridbagConstraints.

GridBagConstraints

ây là l p ch a các ràng bu c cho các đ i t ng đ c trình bày theo cách GridBag. Các ph ng th c và thu c tính c b n c a l p GridBagConstraints:

• GridBagConstraints(): Kh i t o m t đ i t ng ràng bu c c a GridBag.

• gridx/gridy: V trí c a cell mà ta mu n đ t đ i t ng vào (theo chi u X và chi u Y).

• gridwidth/gridheight: Kích th c (vùng trình bày) c a đ i t ng (Theo chi u r ng và chi u cao).

• fill: Xác đnh cách đ t đ i t ng, theo 4 cách:

- GridBagConstraints.NONE: i t ng không thay đ i kích th c theo các cell nó chi m.

- GridBagConstraints.VERTICAL: i t ng có chi u cao kín vùng nó chi m - GridBagConstraints.HORIZONAL: i t ng có chi u r ng kín vùng nó chi m - GridBagConstraints.BOTH: i t ng có chi u cao và chi u r ng ph kín vùng

nó chi m.

• ipadx/ipady: nh đ n v t ng gi m kích th c c a đ i t ng khi khung ch a b thay đ i kích th c (theo chi u X và chi u Y).

• insets: Xác đnh kho ng cách gi a các cell theo b n h ng: Trên, d i, trái, ph i.

• anchor: Xác đnh v trí neo đ i t ng khi kích th c khung ch a thay đ i. Bao g m: NORTH, NORTHEAST, NORTHWEST, EAST, SOUTH, SOUTHEAST, SOUTHWEST.

• weightx/weighty: nh kho ng cách l n ra t ng đ i gi a các đ i t ng v i nhau. Ch ng trình 6.15 minh ho cách trình bày gridbag: T o ra ba nút nh n trong frame, m i nút có m t s ràng bu c khác nhau v kích th c và v trí.

Ch ng trình 6.15

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

public class GridBagLayoutDemo{

// Khai báo và kh i t o frame có tiêu đ

Frame myFrame = new Frame(“Frame has somes buttons!”); myFrame.setSize(300,150); // nh kích c frame

GridBagLayout layout = new GridBagLayout();

myFrame.setLayout(layout); // nh cách trình bày

// Khai báo đ i t ng ràng bu c

GridBagConstraints cts = new GridBagConstraints(); cts.fill = GridBagConstraints.BOTH;

// Button1: v trí (1,1), kích th c (1,1) Button btn1 = new Button(“Click1”);

cts.gridx = 1; cts.gridy = 1; cts.gridheight = 1; cts.gridwidth = 1;

layout.setConstraints(btn1, cts); // nh ràng bu c myFrame.add(btn1); // G n vào frame

// Button2: v trí (2,2), kích th c (1,1) Button btn2 = new Button(“Click2”);

cts.gridx = 2; cts.gridy = 2; cts.gridheight = 1; cts.gridwidth = 1;

layout.setConstraints(btn2, cts); // nh ràng bu c myFrame.add(btn2); // G n vào frame

// Button3: v trí (3,3), kích th c (1,1) Button btn3 = new Button(“Click3”);

cts.gridx = 3; cts.gridy = 3; cts.gridheight = 1; cts.gridwidth = 1;

layout.setConstraints(btn3, cts); // nh ràng bu c myFrame.add(btn3); // G n vào frame

myFrame.setVisible(true); // Hi n th frame }

Hình 6.14: K t qu demo Gridbag layout

6.3.5 Trình bày Null Layout

Cách trình bày Null Layout s trình bày các đ i t ng không theo m t quy t c nào. T t c đ u do ng i dùng t đnh v và thi t l p kích th c cho m i đ i t ng.

• nh v đ i t ng b ng ph ng th c setLocation(): < i t ng>.setLocation(Point);

• nh kích th c đ i t ng b ng ph ng th c setSize(): < i t ng>.setSize(int, int);

• Ngoài ra, có th v a đnh v , v a đnh kích th c cho đ i t ng thông qua ph ng th c: < i t ng>.setBounds(int, int, int, int);

Trong đó, hai tham s d u đnh v đ i t ng, hai tham s sau đnh kích th c đ i t ng.

Ch ng trình 6.16 minh ho cách trình bày t do Null layout: t o ra hai nút nh n và g n vào frame theo hai cách khác nhau.

Ch ng trình 6.16

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

public class NullLayoutDemo{

public static void main(String[] args) { // Khai báo và kh i t o frame có tiêu đ

Frame myFrame = new Frame(“Frame has somes buttons!”); myFrame.setSize(300,150); // nh kích c frame myFrame.setLayout(null); // nh cách trình bày

// Button1: v trí (10,30), kích th c (100,40) Button btn1 = new Button(“Click1”);

btn1.setSize(100, 40);

btn1.setLocation(new Point(10, 30));

myFrame.add(btn1); // G n vào frame

// Button2: v trí (70,120), kích th c (50,20) Button btn2 = new Button(“Click2”);

btn2.setBounds(70, 120, 50, 20);

myFrame.setVisible(true); // Hi n th frame }

}

Hình 6.15: K t qu demo Null layout

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ó đuô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 toá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) // Thoá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.

Một phần của tài liệu Lập trình hướng đối tượng Java PTIT (Trang 136)

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

(173 trang)