Nối tiếp phần 1, phần 2 của cuốn giáo trình Lập trình Java cơ bản tiếp tục trình bày các nội dung chính sau: Thiết kế giao diện người dùng, thiết kế GUI cho chương trình, luồng và tập tin, lập trình cơ sở dữ liệu, kiểu dữ liệu SQL và kiểu dữ liệu Java,... Mời các bạn cùng tham khảo để nắm nội dung chi tiết.
Chương 4: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 4.1.Mở đầu Chương cung cấp cho sinh viên kiến thức để xây dựng giao diện (Graphic User Interface - GUI) chương trình ứng dụng ngơn ngữ java: - Những nguyên tắc thiết kế giao diện - Những thư viện, gói xây dựng giao diện: gồm lớp (class), giao tiếp (interface) quản lý kiện thành phần (components) xây dựng nên giao diện người dùng - Bộ quản lý trình bày (layout managers) - Xử lý kiện Trong khn khổ giáo trình lập trình java chúng tơi trình bày việc thiết kế GUI dùng thư viện awt (abstract windows toolkit) Việc thiết kết GUI trực quan, uyển chuyển sử dụng thư viện JFC (Java Foundation Class) giới giới thiệu chuyên đề java nâng cao 82 4.2.Giới thiệu thư viện awt Thư viện awt thư viện dùng để xây dựng giao diện người dùng cho chương trình ứng dụng có đầy đủ thành phần như: Label, Button, Checkbox, Radiobutton, Choice, List, Text Field, Text Area, Scrollbar, Menu, Frame… Giống API Windows, java cung cấp cho người lập trình thư viện awt Nhưng khác với hàm API, thư viện awt không phụ thuộc hệ điều hành Thư viện awt tảng, sở giúp cho tiếp cận với thư viện mở rộng JFC hiệu Cấu trúc phân cấp tất lớp thư viện awt xem chi tiết tài liệu kèm theo công cụ j2se (phần API Specification) 4.3.Các khái niệm 4.3.1.Component Component đối tượng có biểu diễn đồ họa hiển thị hình mà người dùng tương tác Chẳng 83 hạn nút nhấn (button), checkbox, scrollbar,… Lớp Component lớp trừu tượng java.lang.Object java.awt.Component 4.3.2.Container Container đối tượng vật chứa hay đối tượng có khả quản lý nhóm đối tượng khác lại Những đối tượng thuộc thành phần awt như: button, checkbox, radio button, scrollbar, list,… sử dụng ta đưa vào khung chứa (container) Một số đối tượng container Java: • Panel: Đối tượng khung chứa đơn giản nhất, dùng để nhóm đối tượng, thành phần lại Một Panel chứa bên Panel khác java.lang.Object + java.awt.Component + java.awt.Container + java.awt.Panel • Frame: khung chứa Frame cửa số window hẳn hoi mức bao gồm tiêu đường biên (border) ứng dụng windows thông thường khác Khung chứa Frame thường sử dụng để tạo cửa sổ ứng dụng java.lang.Object + java.awt.Component + java.awt.Container + java.awt.Window + java.awt.Frame • Dialogs: cửa sổ dạng hộp hội thoại (cửa sổ dạng gọi pop-up window), cửa sổ dạng thường dùng để đưa thông báo, hay dùng để lấy liệu nhập từ ngồi vào thơng qua đối tượng, thành phần dialog TextField chẳng hạn Dialog 84 cửa sổ không đầy đủ chức đối tượng khung chứa Frame java.lang.Object + java.awt.Component + java.awt.Container + java.awt.Window + java.awt.Dialog • ScrollPanes: khung chứa tương tự khung chứa Panel, có thêm trượt giúp ta tổ chức xem đối tượng lớn choán nhiều chỗ hình ảnh hay văn bảh = ‘p’; 12 : crun.crunch(ch); 13 : } 14 : } a Dịng khơng biên dịch phương thức trả kiểu void khơng thể overridde 196 b Dịng 12 khơng biên dịch khơng có phiên phương thức crunch() nhận vào tham số kiểu char c Đoạn mã biên dịch phát sinh Exception dịng 12 d Chương trình chạy in kết quả: int version 64 Chọn phát biểu a Tham chiếu đối tượng chuyển đổi phép gán thực phép gọi phương thức b Tham chiếu đổi tượng ép kiểu phép gọi phương thức thực phép gán c Tham chiểu đối tượng chuyển đổi phép gọi phương thức phép gán tuân theo quy tắc khác d Tham chiếu đối tượng chuyển đổi phép gọi phương thức phép gán tuân theo quy tắc giống 65 Cho đoạn mã bên Hãy cho biết dịng khơng thể biên dịch : Object ob = new Object(); : String stringarr[] = new String[50]; : Float floater = new Float(3.14f); : ob = stringarr; : ob = stringarr[5]; : floater = ob; : ob = floater; a Dòng b Dòng a Dòng b Dòng 197 Animal Mammal Dog Cat (implements Washer) Racoon (implements Washer) Swamp Thing Hình sau áp dụng cho câu 66, 67, 68 66 Cho đoạn mã sau: :Dog rover, fido; :Animal anim; 3: :rover = new Dog(); :anim = rover; :fido = (Dog)anim; Hãy chọn phát biểu a Dịng khơng thể biên dịch b Dịng khơng thể biên dịch c Đoạn mã biên dịch thành công phát sinh Exception dịng d Đoạn mã biên dịch thành cơng thi hành 67 Cho đoạn mã sau: :Cat sunflower; :Washer wawa; :SwampThing pogo; 4: :sunflower = new Cat(); 198 :wawa = sunflower; :pogo = (SwampThing)wawa; Hãy chọn phát biểu đú a Dịng khơng thể biên dịch; cần có phép ép kiểu để chuyển từ kiểu Cat sang kiểu Washer b Dịng khơng thể biên dịch khơng thể ép từ kiểu interface sang kiểu class c Đoạn mã dịch chạy phép ép kiểu dòng thừa bỏ di d Đoạn mã biên dịch thành công phát sinh Exceptiono dịng kiểu lớp đối tượng biến wawa lúc thi hành chuyển sang kiểu SwampThing 68 Cho đoạn mã sau :Racoon rocky; :SwampThing pogo; :Washer w; 4: :rocky = new Racooon(); :w = rocky; :pogo = w; a Dịng khơng biên dịch; cần phải có phép ép kiểu để chuyển từ kiểu Racoon sang kiểu Washer b Dịng khơng biên dịch; cần có phép ép kiểu để chuyển từ kiểu Washer sang kiểu SwampThing c Đoạn mã biên dịch phát sinh Exception dịng chuyển đổi kiểu thực thi từ interface sang class không phép d Đoạn mã biên dịch phát sinh Exception dịng kiểu lớp w thời điểm thực thi chuyển sang kiểu SwampThing 69 Cho đoạn mã sau: : for (int i = 0; i < 2; i++){ 2: for (int j = 0; j < 3; j++){ 199 3: 4: 5: 6: 7: 8: } if (i == j){ continue; } System.out.println(“i = “ + i + “j = “ + j); } Dòng số kết in ra? a i = j = b i = j = c i = j = d i = j = 70 Cho đoạn mã sau: : outer: for (int i = 0; i < 2; i++){ 2: for (int j =0; j < 3; j++){ 3: if (i == j){ 4: continue outer; 5: } 6: System.out.println(“i = “ + i + “j = “ + j); 7: } 8: } Dòng số kết in ra? a i = j = b i = j = c i = j = d i = j = 71 Chọn vòng lặp a : while (int i < 7){ 2: i++; 3: System.out.println(“i is “ + i); 4: } b 200 5: 6: 7: 8: c 1: 2: 3: 4: d 1: 2: 3: 4: 5: int i = 3; while (i){ System.out.println(“i is “ + i); } int j = 0; for(int k = 0; j + k != 10; j++, k++){ System.out.println(“j is “ + j + “ k is “ + k); } int j = 0; do{ System.out.println(“j is “ + j++); if (j == 3) { continue loop;} }while (j < 10); 72 Cho biết kết xuất đoạn mã sau : int x = 0, y = 4, z = 5; : if ( x > 2){ 3: if (y < 5){ 4: System.out.println(“message one”); 5: } 6: else{ 7: System.out.println(“message two”); 8: } 9: } 10 : else if (z > 5){ 11 : System.out.println(“message three”); 12 : } 13 : else{ 14 : System.out.println(“message four”); 15 : } a message one b message two c message three 201 d message four 73 Chọn phát biểu cho đoạn mã sau: : int j = 2; : switch (j){ 3: case 2: 4: System.out.println(“value is two”); 5: case + 1: 6: System.out.println(“value is three”); 7: break; 8: default: 9: System.out.println(“value is” + j); 10 : break; 11 : } a Đoạn mã không hợp lệ bỡi biểu thức dịng b Biến j cấu trúc switch() kiểu: byte, short, int long c Kết xuất chương trình dịng: value is two d Kết xuất chương trình dòng: value is two value is three 74 Cho biết kết sau dịch thực thi đoạn chương trình sau: import java.awt.*; public class Test extends Frame { Test() { setSize(300,300); Button b = new Button(“Apply”); add(b); } 10 public static void main(String args[]) { 11 Test f = new Test(); 12 f.setVisible(true); 202 ... f.setMenuBar(mb) 20 4 Phụ Lục B: Đáp án trắc nghiệm kiến thức 1.c; 2. b; 3.d; 4.c; 5.d; 6.d; 7.c; 8.a; 9.d; 10.a; 11.a; 12. c; 14.d; 15.a; 16.d; 17.a; 18.c; 19.a; 20 .c; 21 .a; 22 .a; 23 .a; 25 .c; 26 .a; 27 .a; 28 .d;... tượng, thành phần dialog TextField chẳng hạn Dialog 84 cửa sổ không đầy đủ chức đối tượng khung chứa Frame java. lang.Object + java. awt.Component + java. awt.Container + java. awt.Window + java. awt.Dialog... container Java: • Panel: Đối tượng khung chứa đơn giản nhất, dùng để nhóm đối tượng, thành phần lại Một Panel chứa bên Panel khác java. lang.Object + java. awt.Component + java. awt.Container + java. awt.Panel