Để tạo được giao diện trong Java, trước tiên các bạn phải biết được LayoutManager trong Java, nó giống như là bản vẽ kỹ thuật cho một ngôi nhà.
Có nhiều loại LayoutManager, chẳng hạn như:
- FlowLayout
- BoxLayout
- BorderLayout
- CardLayout
- GridBagLayout
- GridLayout
- GroupLayout
- SpringLayout
Trong phần 2 chúng ta sẽ học về BoxLayout
======================================================================
BoxLayout : X_AXIS & Y_AXIS
======================================================================
BoxLayout cho phép add các control trên mỗi dòng hoặc mỗi cột, tại mỗi vị trí add nó chỉ chấp nhận 1 control, do đó muốn xuất hiện nhiều control tại một vị trí thì bạn nên add vị trí đó là 1 JPanel rồi sau đó add các control khác vào JPanel này, BoxLayout có 2 hằng số để xác định hướng xuất hiện của control: BoxLayout.X_AXIS cho phép add các control theo hướng từ trái qua phải, BoxLayout.Y_AXIS cho phép add các control theo hướng từ trên xuống dưới. BoxLayout khác biệt FlowLayout ở chỗ là nó sẽ không tự động xuống dòng khi hết chỗ chứa, tức là các control sẽ bị che khuất nếu như thiếu không gian chứa nó.
importjava.awt.*;import javax.swing.*;
public class MyBoxLayout extends JFrame { private static final long serialVersionUID = 1L; public MyBoxLayout(String title) { super(title); } public void doShow() { setSize(400,200); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); addControl(); //gọi hàm AddControl setVisible(true); } public void addControl() { JPanel pnBox=new JPanel(); pnBox.setLayout(new BoxLayout(pnBox, BoxLayout.X_AXIS)); JButton btn1=new JButton(“BoxLayout”); btn1.setForeground(Color.RED); Font font=new Font(“Arial”,Font.BOLD | Font.ITALIC,25); btn1.setFont(font); pnBox.add(btn1); JButton btn2=new JButton(“X_AXIS”); btn2.setForeground(Color.BLUE); btn2.setFont(font); pnBox.add(btn2); JButton btn3=new JButton(“Y_AXIS”); btn3.setForeground(Color.ORANGE); btn3.setFont(font); pnBox.add(btn3); Container con=getContentPane(); con.add(pnBox); } public static void main(String[] args) { MyBoxLayout box=new MyBoxLayout(“Học BoxLayout”); box.doShow(); } } |
pnBox.setLayout(new BoxLayout(pnBox, BoxLayout.X_AXIS)); dùng để thiết lập layout cho JPanel, ở đây ta thiết lập BoxLayout.X_AXIS tức là các control xuất hiện theo chiều từ trái qua phải.
Font font=new Font(“Arial”,Font.BOLD | Font.ITALIC,25); tạo đối tượng font với Font chữ là Arial, vừa in đâm và in nghiêng và kích thước là 25px
btn1.setFont(font); thiết lập font chữ cho button btn1
btn2.setForeground(Color.BLUE); thiết lập màu chữ cho btn2
Như đã nói BoxLayout sẽ không tự động xuống dòng khi hết khoảng không gian chứa control, nên các bạn có thể thấy trong hình dưới đây khi Tôi thu hẹp kích thước cửa sổ lại:
Trong đoạn lệnh pnBox.setLayout(new BoxLayout(pnBox, BoxLayout.X_AXIS)); nếu như bạn đổi BoxLayout.X_AXIS thành BoxLayout.Y_AXIS thì các control sẽ được hiển thị như sau:
Rất cám ơn bạn.Bài viết của bạn rất hay
tai sao mình dùng boxlayout thì khi mình kéo hep cửa sổ lại thì nó vẫn tự xuống dòng nhỉ ?
bài viết thật sự bổ ích, cảm ơn tác giả rất nhiều.