Xem mẫu

  1. LẬP TRÌNH JAVA SWING LAYOUT MANAGER Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn ĐHKHTN - 2011
  2. Nội dung  Flow Layout  Border Layout  Card Layout  Grid Layout  Grid Bag Layout  Box Layout  Group Layout
  3. Layout Manager  Một Container là một Component có thể chứa các Component khác – JFrame, JDialog, JScollPane, Jpanel, JDesktopPane, JInternalFrame  getContentPane().add để thêm Component vào Container  Mỗi Container có một đối tượng Layout Manager  Layout Manager là một đối tượng quyết định cách sắp xếp vị trí của các Component bên trong một Container.  Các Layout Manager “implements” từ interface LayoutManager hoặc LayoutManger2. 3
  4. Layout Manager  Mỗi Container có một đối tượng Layout Manager mặc định, nhưng hoàn toàn có thể gán cho Container một đối tượng Layout Manger theo ý muốn.  Mỗi loại Layout Manager có các nguyên tắc riêng cho việc bố trí các Component bên trong một Container.  Một Layout Manager chịu trách nhiệm bố trí các Component được thêm vào Container và khi Container thay đổi kích thước  Sử dụng phương thức setLayout (LayoutManager mng) của Container để thay đổi cách bố trí các Component bên trong nó. 4
  5. FlowLayout  Hình ảnh 5
  6. FlowLayout  Flow Layout bố trí các Component trong Container theo dòng, từ trái sang phải theo thứ tự thêm vào.  Tạo dòng mới khi kích thước dòng còn lại không đủ chứa Component thêm vào.  Flow Layout bố trí vị trí các Component phụ thuộc vào kích thước của Container.  Mỗi dòng của các Component được window mặc định canh giữa theo chiều ngang . Có thể điều chỉnh canh trái hoặc phải 6
  7. FlowLayout – Phương thức thông dụng  Phương thức khởi tạo mặc định – public FlowLayout () • align: FlowLayout.CENTER • vgap: 5px, hgap: 5px  Phương thức khởi tạo có tham số – FlowLayout (int align) • align: canh lề – FlowLayout.CENTER : Canh giữa – FlowLayout.LEFT; : Canh trái – FlowLayout.RIGHT; : Canh phải • hgap: 5px, vgap: 5px 7
  8. FlowLayout – Phương thức thông dụng  Phương thức khởi tạo có tham số – FlowLayout(int align, int vgap, int hgap) • align : canh lề • vgap : kích thước chiều ngang • hgap: chiều dọc 8
  9. FlowLayout – Phương thức thông dụng  public void setAlignment(int align)  public void setHgap(int hgap)  public void setVgap (int vgap)  public int getAlignment()  public int getHgap ()  public int getVgap () 9
  10. FlowLayout - Demo 10
  11. FlowLayout - Demo package swinglayoutmanager; 1 2 3 import java.awt.FlowLayout; 4 import javax.swing.*; 5 6 public class FlowLayoutFrame extends JFrame { 7 //Các control 8 9 private JButton[] jbts; 10 //Phương thức khởi tạo 11 public FlowLayoutFrame () { 12 this.initComponents(); 13 } 14 ... 15 11
  12. FlowLayout - Demo //Phương thức khởi tạo các thành phần 1 private void initComponents() { 2 //MainFrame 3 this.setDefaultCloseOperation( 4 WindowConstants.EXIT_ON_CLOSE); 5 this.setTitle("FlowLayout"); 6 FlowLayout layout=new FlowLayout(); 7 layout.setAlignment(FlowLayout.LEFT); 8 this.setLayout(layout ); 9 //jbts 10 this.jbts = new JButton[45]; 11 for (int i = 0; i < 45; i++) { 12 this.jbts[i] = new JButton(); 13 this.jbts[i].setText(String.valueOf(i+1)); 14 this.getContentPane().add(this.jbts[i]); 15 } 16 pack(); 17 } 18 } 19 12
  13. BorderLayout  Border Layout bố trí các Component bên trong Container theo 5 vùng: – "North", "South", "East", "West" ,"Center". 13
  14. BorderLayout – Phương thức thông dụng  Phương thức khởi tạo mặc định – public BorderLayout () • hgap = 0 • vgap = 0  Phương thức khởi tạo có tham số – public BorderLayout (int hgap, int vgap) • hgap: chiều ngang • vgap : chiều dọc 14
  15. BorderLayout – Phương thức thông dụng  public void setHgap(int hgap)  public void setVgap (int vgap)  public int getHgap()  public int getVgap () 15
  16. BorderLayout - Demo 16
  17. BorderLayout - Demo package swinglayoutmanager; 1 2 import java.awt.BorderLayout; 3 import javax.swing.*; 4 5 public class BorderLayoutFrame extends JFrame { 6 //Các control 7 private JButton jbtNorth; 8 private JButton jbtSouth; 9 private JButton jbtEast; 10 private JButton jbtWest; 11 private JButton jbtCenter; 12 13 //Phương thức khởi tạo 14 public BorderLayoutFrame() { 15 this.initComponents(); 16 } 17 17
  18. BorderLayout - Demo //Phương thức khởi tạo các thành phần 1 private void initComponents() { 2 //MainFrame 3 this.setDefaultCloseOperation( 4 WindowConstants.EXIT_ON_CLOSE); 5 this.setTitle("BorderLayout"); 6 BorderLayout layout = new BorderLayout(); 7 this.setLayout(layout); 8 //jbtNorth 9 this.jbtNorth = new JButton("NORTH"); 10 this.getContentPane().add(this.jbtNorth, 11 BorderLayout.NORTH); 12 //jbtWest 13 this.jbtWest = new JButton("WEST"); 14 this.getContentPane().add(this.jbtWest, 15 BorderLayout.WEST); 16 17 18
  19. BorderLayout - Demo //jbtEast 1 2 this.jbtEast = new JButton("EAST"); 3 this.getContentPane().add(this.jbtEast, 4 BorderLayout.EAST); 5 //jbtSouth 6 this.jbtSouth = new JButton("SOUTH"); 7 this.getContentPane().add(this.jbtSouth, 8 BorderLayout.SOUTH); 9 10 //jbtCenter 11 this.jbtCenter = new JButton("CENTER"); 12 this.getContentPane().add(this.jbtCenter, 13 BorderLayout.CENTER); 14 15 pack(); 16 17 } } 19
  20. CardLayout  Hình ảnh 20
nguon tai.lieu . vn