GridBag Layout Manager trong java
‘GridBagLayout’ là cách trình bày hiệu quả và phức tạp hơn bất cứ cách trình bày nào khác. Layout này đặt các thành phần vào vị trí chính xác.
Với layout này, các thành phần không cần có cùng kích thước. Nó tương tự như GridLayout manager, khi các thành phần được xắp xếp trong lưới theo dòng và cột. Tuy nhiên, thứ tự đặt các thành phần không theo nguyên tắc từ trái sang phải và từ trên xuống dưới.
GridBagLayout gb=new GridBagLayout()
ContainerName.setLayout(gb);
Để sử dụng layout này, bạn cần cung cấp thông tin về kích thước và vị trí của mỗi thành phần. Lớp ‘GridBagLayoutConstraints’ chứa tất cả các thông tin mà lớp GridLayout cần để bố trí và định kích thước mỗi thành phần. Bảng sau liệt kê danh sách các biến thành viên của lớp GridBagConstraints:
Các biến thành viên
|
Mục đích
|
weightx, weighty
|
Chỉ ra sự phân phối của khoảng trống trong GridBagLayout. Giá trị mặc định cho các biến này là 0.
|
gridwidth, gridheight
|
Chỉ ra số lượng các ô (cell) chiều ngang và chiều dọc trong vùng hiển thị của một thành phần.
|
ipadx, ipady
|
Chỉ ra lượng làm thay đổi chiều cao và chiều rộng tối thiểu của thành phần. Nó sẽ thêm 2*ipadx vào chiều rộng tối thiểu và 2*ipady vào chiều cao tối thiểu của thành phần. Giá trị
mặc định cho cả hai là 0.
|
anchor
|
Chỉ ra cách xắp xếp các thành phần trong cell. Mặc định sẽ đặt vào giữa cell. Các thành viên dữ liệu tĩnh (static) sau đây có thể được sử dụng:
- GridBagConstraints.NORTH
- GridBagConstraints.EAST
- GridBagConstraints.WEST
- GridBagConstraints.SOUTH
- GridBagConstraints.NORTHEAST
- GridBagConstraints.SOUTHEAST
|
gridx, gridy
|
Chỉ ra vị trí cell sẽ đặt thành phần. Khi thiết lập giá trị của gridx là ‘GridbagConstraints.RELATIVE’ thì thành phần được thêm sẽ nằm ở vị trí bên phải của thành phần cuối cùng.
|
fill
|
Chỉ ra cách mà một thành phần được bố trí vào cell thế nào nếu như cell lớn hơn thành phần. Mặc định là kích thước thành phần không thay đổi.
|
Bảng 5.4 Các biến thành viên của lớp GridBagConstraints
Bảng sau đây cung cấp một danh sách các biến dữ liệu tĩnh là các giá trị cho biến fill:
Giá trị
|
Mô tả
|
GridBagConstraints.NONE
|
Mặc định, không làm thay đổi kích thước của thành phần.
|
GridBagConstraints.HORIZONTAL
|
Tăng chiều rộng của thành phần theo chiều ngang (HORIZONTAL) để làm cho thành phần khớp với chiều ngang.
|
GridBagConstraints.VERTICAL
|
Tăng chiều cao của thành phần theo chiều đứng (VERTICAL) để làm cho thành phần khớp với chiều dọc.
|
GridBagConstraints.BOTH
|
Tăng chiều rộng, chiều cao của thành phần theo cả chiều ngang và chiều dọc.
|
insets
|
Xác định khoảng cách top, buttom, left và right giữa các thành phần. Mặc định là 0.
|
Bảng 5.5 Các biến thành viên dữ liệu tĩnh của biến fill
Sử dụng phương thức ‘setConstraints()’ để thiết lập các hằng số cho mỗi thành phần. Cho ví dụ:
gblay.setConstraints(lb1, gbc);
‘gblay’ là đối tượng của lớp GridBagLayout, lbl là thành phần ‘Label’ và ‘gbc’ là đối tượng của lớp GridBagConstraints.
Chương trình minh họa một ví dụ của GridBagLayout và GridBagConstraints.
Chương trình GridBagLayout trong java :
import java.awt.*;
class Gbltest extends Frame
{
TextArea ta;
TextField tf;
Button b1,b2;
CheckboxGroup cbg;
Checkbox cb1,cb2,cb3,cb4;
GridBagLayout gb;
GridBagConstraints gbc;
public GBltest(String title)
{
super(title);
gb=new GridBagLayout();
setLayout(gb);
gbc=new GridBagConstraints();
ta=new TextArea(“Textarea”,5,10);
tf=new TextField(“enter your name”);
b1=new Button(“TextArea”);
b2=new Button(“TextField”);
cbg=new CheckboxGroup();
cb1=new Checkbox(“Bold”, cbg,false);
cb2=new Checkbox(“Italic”, cbg,false);
cb3=new Checkbox(“Plain”, cbg,false);
cb4=new Checkbox(“Bold/Italic”, cbg,true);
gbc.fill=GridBagConstraints.BOTH;
addComponent(ta,0,0,4,1);
gbc.fill=GridBagConstraints.HORIZONTAL;
addComponent(b1,0,1,1,1);
gbc.fill=GridBagConstraints.HORIZONTAL;
addComponent(b2,0,2,1,1);
gbc.fill=GridBagConstraints.HORIZONTAL;
addComponent(cb1,2,1,1,1);
gbc.fill=GridBagConstraints.HORIZONTAL;
addComponent(cb2,2,2,1,1);
gbc.fill=GridBagConstraints.HORIZONTAL;
addComponent(cb3,3,1,1,1);
gbc.fill=GridBagConstraints.HORIZONTAL;
addComponent(cb4,3,2,1,1);
gbc.fill=GridBagConstraints.HORIZONTAL;
addComponent(tf,4,0,1,3);
}
public void addComponent(Component c, int row, int col, int nrow, int ncol)
{
gbc.gridx=col;
gbc.gridy=row;
gbc.gridwidth=ncol;
gbc.gridheight=ncol;
gb.setConstraints(c,gbc);
add(c);
}
public static void main(String args[])
{
Gbltest t=new Gbltest(“GridBag Layout”);
t.setSize(300,200);
t.show();
}
}
Khi một container bị thay đổi kích thước và khi khoảng trắng phụ tồn tại, các thành phần có chiều rộng lớn hơn sẽ chiếm giữ nhiều khoảng trống hơn là các thành phần có giá trị về chiều rộng nhỏ hơn.
Kết xuất của chương trình được chỉ ra ở hình
GridBagLayout trong java
Giải thích đoạn mã trên:
gbc.fill=GridBagConstraints.BOTH;
Thành viên fill của lớp GridBagConstraints chỉ ra thành phần có thể được mở rộng theo hướng nằm ngang và thẳng đứng. Cú pháp sau mô tả thành phần chỉ được mở rộng theo hướng nằm ngang:
gbc.fill=GridBagConstraints.HORIZNTAL;
Cú pháp sau sẽ thêm vào thành phần TextArea với số dòng và số cột cần chiếm:
addComponent(ta,0,2,4,1);
0 – Khởi đầu từ dòng thứ 0
2 – Khởi đầu từ dòng thứ 2
4 – ta chiếm giữ 4 dòng
1 – ta chiếm 1 cột
Sử dụng cú pháp sau để bố trí các thành phần vào trong dòng và cột nào đó:
gbc.gridx=col;
gbc.gridy=row;
Ở đây (gridx,gridy) là cột và dòng nơi mà thành phần có thể được đặt vào.
Sử dụng cú pháp sau để chỉ ra số lượng các cột và dòng mà các thành phần có thể chiếm giữ:
gbc.gridwitdh=ncol;
gbc.gridheight=nrow;
Ở đây, gridwidth xác định số lượng các cột mà một thành phần chiếm giữ và gridheight xác định số lượng các dòng mà một thành phần chiếm giữ.
Khi một container bị thay đổi kích thước và khi khoảng trắng phụ tồn tại, các thành phần có chiều rộng lớn hơn sẽ chiếm giữ nhiều khoảng trống hơn là các thành phần có giá trị về chiều rộng nhỏ hơn.
Tạm biệt mụn ẩn dưới da với cao bí đao cocoon
Mụn ẩn là gì? cao bí dao có tác dụng đẩy mụn ẩn dưới da như thế nào? hay xem ngay để trị mụn ẩn đúng cách nhé.
Cao bi dao
38/9 nguyen van troi, p15, Q phu nhuan,
TP.HCM,
Viet Nam
Biểu hiện chú ý khi sử dụng Cao bí đao
Biểu hiện chú ý khi sử dụng Cao bí đao, nhiều bạn thắc mắc khi dùng cao bí đao có biểu hiệu gì?
Cao bi dao
38/9 nguyen van troi, p15, Q phu nhuan,
TP.HCM,
Viet Nam
Cao bí đao Cocoon bộ sản phẩm chăm sóc da từ thiên nhiên
Cao bí đao Cocoon bộ sản phẩm chăm sóc da từ thiên nhiên, chăm sóc da bằng sản phẩm thiên nhiên từ cao bí đao và cao vỏ bưởi
Cao bi dao
38/9 nguyen van troi, p15, Q phu nhuan,
TP.HCM,
Viet Nam
Khuyến mãi tháng 6: 100 thỏi son trị giá 6 triệu
Khuyến mãi tháng 6: 100 thỏi son trị giá 6 triệu khi mua cao bí đao tại website: caobidao.com.vn và caovobuoi.com
Cao bi dao
38/9 nguyen van troi, p15, Q phu nhuan,
TP.HCM,
Viet Nam
Cao bí đao có thực sự tốt
Bạn Huyền hỏi: Chào anh chị cho em hỏi "Cao bí đao có thực sự tốt ? em thấy hoang mang trên mạng có nhiều ý trái chiều nhau mong anh chị giải đáp giúp em? em cảm ơn! "
Cao bi dao
38/9 nguyen van troi, p15, Q phu nhuan,
TP.HCM,
Viet Nam
Địa chỉ sản xuất Cao bí đao
Địa chỉ sản xuất Cao bí đao, nhiều bạn băn khoăn hỏi địa chỉ sản xuất cao bí đao, quy trình sản xuất cao bí đao, nhà phân phối cao bí đao.
Cao bi dao
38/9 nguyen van troi, p15, Q phu nhuan,
TP.HCM,
Viet Nam
TP.HCM:
0972383373
7/50A Đường 182, Tăng Nhơn Phú A, Quận 9
HÀ NỘI:
0962059733
143 Trần Phú, Hà Đông