Bài giảng Lập trình Java cơ bản - Chương 3: Điều khiển sự kiện xuất
Bạn đang xem tài liệu "Bài giảng Lập trình Java cơ bản - Chương 3: Điều khiển sự kiện xuất", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_lap_trinh_java_co_ban_chuong_3_dieu_khien_su_kien.ppt
Nội dung text: Bài giảng Lập trình Java cơ bản - Chương 3: Điều khiển sự kiện xuất
- LẬP TRÌNH JAVA CƠ BẢN Chương 3 ĐIỀU KHIỂN SỰ KIỆN XUẤT Lê Tân Bộ môn: Lập trình máy tính 1
- Nội dung chương 3 n Giao diện và lập trình điều khiển sự kiện n Định dạng xuất n Quản lý sự kiện n Đăng ký listener n Các phương thức event-handler 2
- 3.1 Giao diện và lập trình điều khiển sự kiện n Giao diện (interface): Là mặt kết nối, cho phép các hệ thống độc lập gặp gỡ và tác động hoặc giao tiếp với nhau. n Lập trình điều khiển sự kiện (event-driven programming): Tương tác của người sử dụng với một thành phần của giao diện đồ hoạ người dùng GUI là một sự kiện có thể được xử lý bởi chương trình. n Frame (khung): Một kiểu cửa sổ được người sử dụng định nghĩa gọi là một khung. 3
- 3.1 Giao diện và lập trình điều khiển sự kiện n Thực hiện các bước: • Nạp gói (package – tương tự khái niệm thư mục, hay folder của Windows) chứa lớp Frame từ thư viện Java, đó là gói java.awt • Khai báo một biến thuộc lớp Frame • Sử dụng toán tử new để tạo một đối tượng thuộc lớp Frame và gán cho biến đã khai báo 4
- 3.1 Giao diện và lập trình điều khiển sự kiện • Xác định bộ quản lý bố cục (layout manager) cho đối tượng Frame đó • Thêm phần tử xuất dữ liệu (ví dụ một nhãn – label) vào đối tượng Frame. • Điều chỉnh kích thước của đối tượng Frame cho phù hợp với dữ liệu xuất mà nó chứa. • Hiển thị đối tượng Frame trên màn hình 5
- 3.1 Giao diện và lập trình điều khiển sự kiện n Ví dụ về sử dụng khung xuất import java.awt.*; // Nạp gói java.awt private static Frame outputDisplay;//đối tượng Frame outputDisplay = new Frame( ); // Khởi tạo đối tượng // Xác định bộ quản lý bố cục cho khung outputDisplay.setLayout( new FlowLayout( )); //Thêm nhãn để hiển thị dữ liệu vào khung outputDisplay.add( new Label(“Total is $” + total)); outputDisplay.pack( ); // Điều chỉnh kích thước outputDisplay.show( ); // Hiển thị đối tượng Frame 6
- 3.1 Giao diện và lập trình điều khiển sự kiện n Phương thức tạo (Constructor): • Constructor là một dạng đặc biệt của phương thức • Được gọi để xây dựng đối tượng. • Tên của nó cần phải đặt giống với tên của lớp chứa nó. • Constructor không có tham số được gọi là default constructor. • Các Constructor không có kiểu dữ liệu trả về, kể cả kiểu void. • Các Constructor được gọi sử dụng toán tử new khi tạo một đối tượng, đóng vai trò khởi tạo đối tượng. n Ví dụ về constructor: // Constructors public Label( ) // Tạo một nhãn rỗng (không chứa văn bản) 7
- 3.2 Định dạng xuất n GUI (Abstract Windowing Toolkit package – gói công cụ cửa sổ trừu tượng): Giao diện đồ họa người sử dụng. n Một số thành phần của GUI: • Khung (frame): Một dạng cửa sổ (window) chứa các thành phần đồ họa khác. • Nhãn (label): Thành phần hiển thị văn bản • Nút (button): Thành phần tạo ra một sự kiện • Trường văn bản (textfield): Thành phần trong đó người sử dụng có thể nhập một giá trị. 8
- 3.2 Định dạng xuất n Bộ quản lý bố cục: Định dạng bảng cho việc xuất dữ liệu n FlowLayout: • Chương trình quản lý bố cục đơn giản nhất • Quản lý mặc định cho khung • Đặt các thành phần cái nọ sau cái kia. n GridLayout: • Rất giống với FlowLayout. • Chia nhỏ khung thành một khối chữ nhật với số hàng và số cột cố định • Chèn các thành phần vào các ô lưới, hết hàng này đến hàng kia. 9
- 3.2 Định dạng xuất n Định dạng xuất văn bản trong nhãn • Mặc định, văn bản được căn lề trái. • Có thể căn lề phải, hoặc căn giữa cho văn bản trong nhãn. • Label.LEFT, Label.CENTER, Label.RIGHT. n Ví dụ: Muốn cột “Named” trong bảng trên được canh giữa: dateWindow.add(new Label(“Named”, Label.CENTER)); 10
- 3.3 Quản lý sự kiện n Event (sự kiện): Là một hành động, chiếm một vị trí không đồng bộ theo khía cạnh thực hiện chương trình. n Event handling (xử lý sự kiện): Tiến trình đáp ứng các sự kiện. n Event listener (bộ nghe sự kiện): Đối tượng, chờ đợi sự xuất hiện của một hoặc nhiều sự kiện. n Event handler (bộ xử lý sự kiện): Phương thức, là bộ phận của event listener, được gọi khi listener nhận được một sự kiện tương ứng. n Event source (nguồn sự kiện): Đối tượng sản sinh sự kiện. n Firing an event: Việc sản sinh sự kiện của một event source. n Registering the listener (đăng ký bộ nghe sự kiện): Thêm listener vào danh sách các listener được quan tâm của event source. 11
- 3.3 Quản lý sự kiện n Các bước xử lý một sự kiện • Ghi nhận của một event listener để nhận biết dạng đặc trưng của sự kiện • Việc thi hành event handler được gọi tự động nhằm đáp ứng cho một dạng riêng biệt của sự kiện 12
- 3.3 Quản lý sự kiện n Chế độ uỷ quyền xử lý sự kiện • Sử dụng event listener trong việc quản lý sự kiện • Việc xử lý một sự kiện được uỷ quyền cho một đối tượng đặc biệt trong chương trình • Sử dụng một lớp riêng biệt để định nghĩa event listener là thực tế thường gặp để tách giao diện GUI từ việc thi hành của event listener của nó 13
- 3.4 Đăng ký listener n Việc đăng ký một event listener được thực hiện bằng cách gọi một phương thức liên kết với đối tượng event source. n Phương thức đăng ký một listener là add, theo sau là tên listener. n Ví dụ: listener của các sự kiện window là WindowListener → phương thức đăng ký listener là addWindowListener. Được thực hiện như sau: outputDisplay.addWindowListener (myListener); 14
- 3.4 Đăng ký listener n Các lớp thích nghi: Có thể một chương trình chỉ cần một số ít các phương thức từ một giao diện event listener n Sẽ có các lớp thích nghi với phần thân rỗng cho mỗi phương thức có trong giao diện tương ứng. n Ví dụ: lớp WindowAdapter. n Ưu điểm: chỉ định nghĩa các phương thức thật sự cần thiết cho việc quản lý sự kiện. 15
- 3.5 Các phương thức event-handler //Ví dụ: Xuất ra một ngày theo 2 định dạng khác nhau import java.awt.*; // Nạp lớp trong gói java.awt import java.awt.event.*; public class DateFormats { private static Frame outputDisplay; //Khai báo đối tượng public static void main( String[ ] args ) { final String MONTH_NAME = “August”; // Tên tháng final String MONTH_NUMBER = “8”; // Tháng theo số final String DAY = “17”; // Ngày trong tháng final String YEAR = “2001”; // Năm theo 4 ký số String first; //Ngày theo dạng tháng – ngày – năm String second; // Ngày theo dạng tháng – năm – ngày outputDisplay = new Frame( ); outputDisplay.setLayout( new GridLayout(5, 2) ); 16
- 3.5 Các phương thức event-handler outputDisplay.add( new Label(“Format”)); outputDisplay.add( new Label(“Example”)); // Hiển thị ngày theo dạng thứ nhất outputDisplay.add( new Label(“Month day, year”)); first = MONTH_NAME + “ ” + DAY + “, ” + YEAR; outputDisplay.add( new Label(first) ); // Hiển thị ngày theo dạng thứ hai outputDisplay.add( new Label(“day Month year”)); second = DAY + “ ” + MONTH_NAME + “ ” + YEAR; outputDisplay.add( new Label(second) ); outputDisplay.pack( ); //Điều chỉnh kích thước khung outputDisplay.show( );// Hiển thị khung 17
- 3.5 Các phương thức event-handler // Quản lý sự kiện cửa sổ đóng outputDisplay.addWindowListener( new WindowAdapter( ) // Tạo một đối tượng WindowAdapter { // Phương thức thay thế phương thức rỗng public void windowClosing (WindowEvent event) { outputDisplay.dispose( ); // Xóa khung System.exit( 0 ); // Thoát chương trình } }); } } 18
- Câu hỏi và bài tập 1. Từ khoá nào của Java được sử dụng để nạp vào các lớp trong một gói? 2. Viết lệnh tạo một đối tượng Frame tên là outDisplay. 3. Thành phần được sử dụng để truyền các giá trị đến một phương thức là gì? 4. Có bao nhiêu cột và bao nhiêu hàng trong một khung được định dạng theo lệnh sau? out.setLayout(new GridLayout(4, 3)); 19
- Câu hỏi và bài tập 5. Hãy viết một lệnh để thêm nhãn “This is my answer” vào outDisplay. 6. Chức năng của phương thức add của lớp Frame là gì? 7. Mục đích của phương thức setLayout là gì? Hãy gọi tên hai chương trình quản lý bố cục và nêu sự khác nhau giữa chúng. 8. Đối tượng mà vai trò của nó là chờ đợi sự xuất hiện của một sự kiện là gì? 9. Đoạn mã của phương thức windowClosing được chứa ở đâu? 10.Hãy sửa đổi chương trình DateFormats để hiển thị ngày sinh của bạn. 20