L P TRÌNH GIAO DIN TRÊN JAVA
6.3.4 Trình bày GridBagLayout
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