Không dễ dàng gì để tự quản lý vị trí của các components trên GUI.. layout, các lớp layout này đều implement LayoutManager interface... GUI Slide 5/57FlowLayout Bố trí các component
Trang 1SWING
Layout trong SWING
Trang 2Nội dung
Trang 3Giới thiệu về Layout
lên container
Không dễ dàng gì để tự quản lý vị trí
của các components trên GUI
LayoutManager là interface mô tả về
các layout
layout, các lớp layout này đều
implement LayoutManager interface
Trang 5GUI Slide 5/57
FlowLayout
Bố trí các component theo dạng chảy xuôi
theo thứ tự mà phần tử này được add vào container.
Đây là layout mặc định của Panel.
Nếu có nhiều component trên container
Các component có thể được đặt trên
nhiều dòng Vấn đề gióng hàng (Align)
Giữa các component, chúng hở nhau theo
chiều dọc (vgap) bao nhiêu, theo chiều
ngang (hgap) bao nhiêu?
Trang 6FlowLayout(int align, int hgap, int vgap)
Tạo FlowLayout với 3 tham số
Trị của align: các dữ liệu static của class
FlowLayout
LEFT CENTER RIGHT
LEADING (phía đầu, tương tự LEFT)
TRAILING (phía đuôi, tương tự RIGHT)
Trang 7GUI Slide 7/57
BorderLayout
Bố trí các component theo dạng ra biên của
khung tạo ra 5 vị trí: EAST, WEST,
SOUTH,NORTH, CENTER.
Đây là layout MẶC ĐỊNH của Frame.
Nếu container chỉ có 1 component và đặt nó ở vị
trí CENTER thì component này phủ kín container.
Cú pháp thêm 1 component vào container tại 1 vị
Trang 8dòng, cols cột đều nhau
Lưới
Lưới 1x4 Lưới 1x4
Trang 9Constructor
GridLayout()
GridLayout(int rows, int cols)
Tạo grid layout rows x cols
GridLayout(int rows, int cols, int hgap,
int vgap)
Trang 10
Layout dạng lưới cho phép 1 component
chiếm 1 số ô kề nhau theo cả 2 chiều.
Hình Empoyee Info sau là GridBagLayout
6x4, các label bên trái chiếm 1ô, các
textbox chiếm 3 ô ngang Dòng “Sex”
chiếm 4 ô ngang, 2 checkbox chiếm 2 ô ngang.
Trang 11 Bố trí các component thành từng lớp như
lưng các quân bài (card).
Thường dùng Panel để chứa các
component.
Tại 1 thời điểm chỉ có 1 panel hiện hành
(quân bài trên cùng).
Có thể chuyển qua lại giữa các Panel.
Trang 12Frame
Cơ chế điều khiển
Main panel với
Trang 14Lập trình Giao Diện với JFC
Trang 15Nội dung
Trang 17GUI Slide 17/57
Gói AWT của Java
AWT : abstract windowing toolkit - bộ
công cụ chứa các lớp để tạo cửa sổ.
AWT là 1 phần của JFC- Java Foundation
Trang 1810. public static void main (String[] args) {
11 new DemoAWT("First App");
12 }
13 }
18
Trang 19•Có thể thay đổi diện
mạo của linh kiện lúc runtime
•Mô hình MVC
(Model – View – Controller)
Trang 21Kiến trúc SWING
Trang 229. public static void main (String[] args) {
10 new DemoJFrame("Demo Swing");
11 }
12 }
22
Trang 23SWING Component - JFrame
public class JButtonsDemo extends
JFrame
{
Container cn ;
JButton button1 = new JButton(“Java”);
public JButtonsDemo(String title)
SourceCode
JFrame() JFrame(String title )
Trang 24JPanel
ContentPane của JFrame thực chất là
1 JPanel
JPanel()
JPanel( LayoutManager layout)
p.add(c) ;
Trang 25JButton
JButton là lớp kế thừa từ JAbstractButton, diện mạo của
JButton bao gồm: 1 nhãn and/or 1 ảnh diễn tả mục đích của nút này Chữ trên nút có thể gạch dưới để mô tả phím nóng của nút (shortcut key, mnemonic key).
Trang 26JLabel
JLabel cũng tương tự như Label của AWT
nhưng có thêm tính chất cho phép nạp 1 ảnh vào nhãn này, xử lý HTML
Trang 30Nhập bằng lựa chọn với JCheckBox,
JRadioButton, JList
JCheckbox : Cho phép chọn nhiều lựa chọn
JRadioButton : Chọn 1 trong nhóm lựa chọn
Trang 31Demo JRadioButton - JCheckBox
ButtonGroup Grp = new ButtonGroup();
JRadioButton rad1 = new JRadioButton("Male",true);
JRadioButton rad2 = new JRadioButton("Female",false);
Grp.add(rad1); Grp.add(rad2);
Source Code
Trang 34JMenu
Trang 35JMenuItem() JMenuItem(Action a) JMenuItem(Icon icon) JMenuItem(String text) JMenuItem(String text, Icon icon) JMenuItem(String text,int mnemonic)
JMenuBar mBar = new JMenuBar JMenu mFile = new JMenu(“File”);
mBar.add(mFile); this.setJMenuBar(mBar);
Trang 36}
Trang 37Menu Demo
Source Demo Menu1.java
Trang 38SWING
Dialog
Trang 39Nội dung
Trang 40button “OK”
1.) "Yes" and "No"
2.) "Yes", "No" and "Cancel"
3.) "Ok", and "Cancel"
button “OK” và “Cancel”
Trang 41GUI Slide 41/57
Các phương thức của class
showMessageDialog(): hiển thị Message đơn
giản với một nút “OK”
showInputDialog(): hiển thị một hộp thoại
input Method trả về một String ( vừa nhập )
showConfirmDialog(): And the last or third
method is the showConfirmDialog() which
asks the user for confirmation (Yes/No) by
displaying message This method return a
numeric value either 0 or 1 If you click on the
"Yes" button then the method returns 1
otherwise 0
Trang 42
import javax.swing.*;
import java.awt.event.*;
public class ShowDialogBox{
JFrame frame;
public static void main(String[] args){
ShowDialogBox db = new ShowDialogBox();
}
public ShowDialogBox(){
frame = new JFrame("Show Message Dialog");
JButton button = new JButton("Click Me");
public class MyAction implements ActionListener{
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(frame,"Roseindia.net"); }
}
}
Demo
Trang 43Các phương thức khác - Demo
Trang 44GUIKết quả …
Trang 45ShowInputDialog
Trang 46Các Dialog chuẩn của Window
46