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