GIAO DIỆN NGƯỜI DÙNG (GUI) Chương 4 KỸ THUẬT LẬP TRÌNH GIAO DIỆN NGƯỜI DÙNG (GUI) TRONG JAVA
Nội dung Khái niệm, đặc điểm cơ bản Tổng quan thư viện AWT Tổng quan JFC Swing Component Container Layout manager Các bước xây dựng GUI Ví dụ minh họa Các component cơ bản Các container Các kiểu layout manager Mô hình, cơ chế xử lý event Ví dụ minh họa, bài tập
Tài liệu đọc thêm [1] Kathy Walrath, Mary Campione, Alison Huml, Sharon Zakhour. The JFC Swing Tutorial, Second Edition. Copyright © 2004 Sun Microsystems, Inc.
Thư viện GUI trong java Thư viện hỗ trợ: tập hợp các lớp java cung cấp hỗ trợ thiết kế, xây dựng GUI. awt (java.awt.*) Abstract Window Toolkit swing (javax.swing.*) Các components của các nhà cung cấp thứ 3
Tổng quan về AWT
Tổng quan về JFC Swing
Tổng quan về JFC Swing
Tổng quan về JFC Swing
Tổng quan về JFC Swing
Tổng quan về JFC Swing
Tổng quan về JFC Swing
Tổng quan về JFC Swing
Tổng quan về JFC Swing
Khái niệm component Tất cả các thành phần cấu tạo nên chương trình GUI được gọi là component. Ví dụ Containers, TextField, Label, Checkbox, TextArea Scrollbars, Scrollpanes, Dialog …
Khái niệm container Là thành phần mà có thể chứa các thành phần khác,có thể vẽ và tô màu. Frame/JFrame, Panel/JPanel, Dialog/JDialog, ScrollPane/JScrollPane, … Gắn component vào khung chứa containerObj.add(compObj); Lấy thông tin của component objectName.get…( ); Gán thông tin cho component objectName.set…( );
Khái niệm Layout Manager Các loại layout khác nhau: Flow Layout Border Layout Grid Layout GridBag Layout Null Layout … Trình quản lý layout được thiết lập bằng cách gọi phương thức ‘setLayout( )’
Nguyên tắc xây dựng GUI trong java Lựa chọn 1 container: Frame/JFrame, Window/JWindow, Dialog/JDialog, … Tạo các điều khiển: (buttons, text areas..) Đưa các điều khiển vào vùng chứa Sắp xếp các điều khiển(layout) Thêm các xử lý sự kiện (Listeners)
FlowLayout Là trình quản lý layout mặc định cho các applet và các panel Với FlowLayout các thành phần sẽ đượ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 Các constructor: FlowLayout layout = new FlowLayout(); FlowLayout layout = new FlowLayout(FlowLayout.RIGHT); // Canh lề bên phải
Flow Layout – Left and Right Aligned
BorderLayout Là trình quản lý layout mặc định cho Window, Frame và Dialog Trình quản lý này có thể xắp xếp đến 5 thành phần trong container Các thành phần có thể được đặt vào 5 hướng NORTH, EAST, SOUTH, WEST và CENTER của container Ví dụ: Để thêm một thành phần vào vùng North của container Button b1= new Button(“North Button”); setLayout(new BorderLayout( )); add(b1, BorderLayout.NORTH);
BorderLayout
GridLayout Hỗ trợ việc chia container thành một lưới Các thành phần được bố trí trong các dòng và cột Một ô lưới nên chứa ít nhất một thành phần Kiểu layout này được sử dụng khi tất cả các thành phần có cùng kích thước GridLayout layout = new GridLayout(no. of rows, no. of columns); containerObj.setLayout(layout);
GridBagLayout Bố trí các thành phần một cách chính xác Các thành phần không cần có cùng kích thước Các thành phần được xắp xếp trong một lưới chứa các dòng và các cột Thứ tự đặt các thành phần không tuân theo hướng từ trái-sang-phải và trên-xuống-dưới Hàm constructor GridBagLayout gb = new GridBagLayout( );
GridBagLayout Lớp ‘GridBagLayoutConstraints’ lưu trữ tất cả các thông tin mà lớp GridLayout yêu cầu: Vị trí và kích thuớc mỗi thành phần
NullLayout Tự do trong việc định vị trí và kích thước của các components Frame fr = new Frame("NullLayout Demo"); fr.setLayout(null);
Mô hình xử lý sự kiện Có 3 yếu tố quan trọng trong mô hình xử lý sự kiện: Nguồn phát sinh sự kiện (event source) Sự kiện (event object) Bộ lắng nghe sự kiện (event listener)
Mô hình xử lý sự kiện Nguồn phát sinh sự kiện cần phải đăng ký “bộ lắng nghe” để xử lý khi người dùng tác động class MyMenuItemListener implements ActionListener { … }
Hành động, sự kiện, lắng nghe Đối tượng Sự kiện Bộ lắng nghe Window, Frame, … WindowEvent WindowListener Button, MenuItem, … ActionEvent ActionListener TextComponent, … TextEvent TextListener List, … … ItemEvent ItemListener ComponentEvent ComponentListener MouseEvent MouseListener MouseMotionListener KeyEvent KeyListener
Tổng quan về event của AWT, Swing java.awt.event.* javax.swing.event.*
Bài thực hành Viết chương trình minh họa việc sử dụng các đối tượng components, đối tượng khung chứa container, bộ quản lý trình bày Layout Manager. Viết chương trình xây dựng giao diện chương trình máy tính cá nhân tương tự chương trình Calculator trên windows. Viết chương trình xây dựng giao diện tương tự giao diện của trình ứng dụng MS. WordPad trên Windows. Viết chương trình xây dựng giao diện chương trình tương tự Windows Explorer.