Xem mẫu

  1. GV: Vũ Đình Hồng Khoa: CNTT – TỨD
  2. Layout manager điều khiển cách trình bày vật lý của các  phần tử GUI như là button, textbox, option button v.v… Một layout manager tự động bố trí các thành phần này trong container. Các kiểu trình bày khác nhau: Flow layout  Border layout  Card layout  Grid layout  GridBag Layout  Layout mặc định (Default):  Applet và Panel: Flow layout  Window, Frame và Dialog: Border layout 
  3. Đây là layout manager mặc định cho Applet và  Panel. Các thành phần được xắp xếp từ góc trái trên đến góc phải dưới của màn hình. Khi một số thành phần được tạo, chúng được xắp xếp theo hàng, từ trái sang phải-từ trên xuống dưới.
  4. Các constructor của FlowLayout:  new FlowLayout() // Mặc định (default), khoảng cách giữa các component  là 5 pixes. Canh theo Center new FlowLayout(int align)// Qui định canh lề (trái phải hay center)  new FlowLayout(int align, int hgap, int vgap)// Qui định canh lề và khoảng  cách theo chiều ngang, dọc của các component. Ví dụ:  FlowLayout mylayout = new FlowLayout() //Default  Loại thứ hai bạn có thể viết:  FlowLayout exLayout=new FlowLayout(FlowLayout.RIGHT); Hay  setLayout(new FlowLayout(FlowLayout.RIGHT)); Nếu viết theo giá trị int thì:  1=Center  2=Right  3=Left  Ví dụ  FlowLayout exLayout=new FlowLayout(2); 
  5. BorderLayout là layout manager mặc định cho Window,  Frame và Dialog. Layout này xắp xếp tối đa 5 thành phần trong một container. Những thành phần này có thể được đặt ở các hướng North, South, East, West và Center của container. NORTH – Đặt ở đỉnh của container.  EAST – Đặt phía bên phải của container.  SOUTH – Đặt ở phía dưới của container.  WEST – Đặt phía bên trái của container.  CENTER – Đặt ở giữa của container. 
  6. Nếu ta không qui định gì khi thêm component vào Frame,  Window và Dialog thì các component sẽ có kích thước tối đa và component sau cùng sẽ đè lên các component trước tại vị trí Center. Các Constructor của BorderLayout:  New BorderLayout()  New BorderLayout(int hgap,int vgap)   Khác FlowLayout, bạn chỉ cần dùng constructor, sau đó các  component sẽ tự động thêm vào theo trái-phải, trên-dưới. Trong BorderLayout, sau khi setLayout, với mỗi component bạn phải qui định vị trí (north, east, west, south, center) Ví dụ, để thêm một thành phần vào vùng North, bạn sử dụng  cú pháp sau:
  7. Button b1=new Button("North Button"); // khai báo  thành phần setLayout(new BorderLayout()); // thiết lập layout  add(b1,BorderLayout.NORTH); // thêm thành phần vào  layout  Các thành phần vẫn giữ nguyên vị trí tương đối của chúng kể  cả khi container bị thay đổi kích thước. Cái này hoàn toàn khác với FlowLayout. Nếu bạn thử thay đổi kích thước Frame trong bài trước, bạn sẽ thấy các component thay đổi vị trí. Các thành phần được đặt trong vùng North, South được dàn nằm ngang trong khi đó các thành phần đặt trong vùng East và West lại được dàn thẳng đứng. Các thành phần được đặt trong vùng Center sẽ được dàn đều vào những khu vực nằm giữa của container.
  8. Như trong phần trước, chúng ta có nói đến việc trong 1  chương trình chúng ta thường phải áp dụng nhiều Layout. Các Layout này kết hợp với nhau trên cùng một Container và cùng xuất hiện một lần. Tuy nhiên, đôi khi chúng ta có nhu cầu mỗi lần chỉ một layout xuất hiện.
  9. anelTwo.setLayout(new GridLayout(2,1));   Panel chính sẽ chứa những panel này. Chúng ta thiết lập layout của panel chính là Cardlayout như sau:  CardLayout card=new CardLayout();  panelMain.setLayout(card);  Bước kế tiếp là thêm các panel khác vào panel chính:  panelMain.add("Red Panel", panelOne);  panelMain.add("Blue Panel", panelTwo);  Phương thức add() sử dụng hai tham số. Tham số đầu tiên là một String làm nhãn của panel và tham số thứ hai là tên đối tượng Panel.
  10. GridLayout trợ giúp việc chia container vào trong ô  lưới. Các thành phần được đặt trong các ô giao của dòng và cột. Mỗi lưới nên chứa ít nhất một thành phần. Một lưới được sử dụng khi tất cả các thành phần có cùng kích thước.  GridLayout được tạo như sau:  Gridlayout g1=new GridLayout(4,3);  4 là số dòng và 3 là số cột.
  11. Thật sự không quá phức tạp, tuy nhiên bạn cần chú ý cẩn thận.  Cũng như GridLayout, bề mặt của Container sẽ gồm nhiều ô  lưới. Tuy nhiên các việc đặt các component vào ô lưới trong  GridBagLayout không phải theo kiểu mỗi component một ô mà là mỗi component có thể đặt trên nhiều ô. GridBagLayout phải kết hợp với  GridBagLayoutConstraints Cả hai đều là Class.  Đại khái Class thứ nhất giống như một qui định chung, chỉ ra  rằng ta sẽ sử dụng một kiểu Layout theo kiểu ô lưới nhưng mỗi component có thể đặt trên nhiều ô. Class thứ hai dùng để chỉ ra những qui định cụ thể cho các  component được xếp đặt thông qua class thứ nhất.
  12. Trình tự thông thường sẽ gồm những bước:  1 Tạo một GridBagLayout object 2 Tạo một GridBagConstraints object 3 Thiết lập GridBagLayout object như layout manager cho container mà bạn đang thao tác. 4 Qui định các constraints, nói cách khác qui định các chi tiết ngang,dọc, vị trí... 5 Gọi method setConstraints() của lớp GridBagLayout, trong method này có 2 tham số là component bạn muốn thao tác và Constraints mà bạn qui định trong bước 4 ở trên. 6 Gọi add() method của lớp Container để thêm component bạn vừa qui định trên vào Container. 7 Tiếp tục từ bước số 4 cho mỗi component  Lưu ý là bắt đầu từ bước 4, bạn phải thao tác với từng component.
  13. 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
  14. 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.
  15. 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.
  16. Q&A
nguon tai.lieu . vn