Nghiên cứu JM và xây dựng ứng dụng minh họa (Đặng Nguyễn Kim Anh vs Đào Anh Tuấn) - 2 potx

59 350 0
Nghiên cứu JM và xây dựng ứng dụng minh họa (Đặng Nguyễn Kim Anh vs Đào Anh Tuấn) - 2 potx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Java Mobile 4.3.2. Gauge: Gauge dùng để biểu diễn tiến độ hoàn thành một việc nào đó (download, upload ) hoặc cấp độ từ thấp đến cao (của âm lượng, độ khó ). Gauge đặc trưng bởi hai giá trị: giá trị hiện hành và giá trị cực đại cho phép. Giá trị hiện hành này luôn được duy trì giữa 0 và giá trị cực đại. Gauge gồm hai dạng: • Chế độ tương tác (Interactive mode): Trong chế độ này, đối tượng Gauge sẽ được vẽ dạng các thanh song song có chiều cao tăng dần biểu thị các cấp độ từ thấp đến cao. Người sử dụng có thể điều chỉnh giá trị hiện thời của Gauge bằng các phím bấm. VD: điều chỉnh âm lượng cao thấp. Hình 4.3 Giao diện đối tượng Gauge chế độ tương tác • Chế độ không tương tác (Non-interactive mode): Đối tượng được biểu diễn dạng các thanh song song có chiều cao bằng nhau, người dùng không được phép thay đổi giá trị của nó. Người lập trình sẽ lập trình cho đối tượng này tự động cập nhật giá trị theo thời gian. 48 Java Mobile Hình 4.4 Giao diện đối tượng Gauge chế độ không tương tác Các phương thức và chức năng tương ứng của lớp Gauge: Lớp Gauge: javax.microedition.lcdui.Gauge Phương thức Chức năng Gauge (String label, boolean interactive, int maxValue, int initValue) Khởi tạo một đối tượng Gauge int getValue () Lấy giá trị hiện thời của Gauge void setValue (int value) Gán giá trị cho đối tượng Gauge int getMaxValue () Lấy giá trị cực đại cho phép của Gauge void setMaxValue (int maxValue) Gán giá trị cực đại cho phép cho Gauge boolean isInteractive () Kiểm tra Gauge có thuộc chế độ tương tác không Bảng 4.5 Lớp Gauge VD: //tạo 1 biến Gauge cho phép người dùng điều chỉnh âm thanh (chế độ tương tác) Gauge gVolume= new Gauge (“Volume”, true, 6, 2); //gắn Gauge vào Form fmMain.append(gVolume); fmMain.setCommandListener(this); 49 Java Mobile //tạo 1 biến Gauge biểu diễn tiến trình Download (chế độ không tương tác): Gauge gDownload = new Gauge(“Download Progress”, false, 20,1); //gắn Gauge vào Form fmMain.append(gDownload); fmMain.setCommandListener(this); //cập nhật giá trị liên tục cho Gauge bằng cách sử dụng 1 biến timer //khoảng cách mỗi lần cập nhật là 1000 mili giây Timer tTimer = new Timer(); DTTask ttTimerTask = new DTTask(); //class DTTask extends TimerTask tTimer.scheduleAtFixedRate (ttTimerTask, 0, 1000); //lớp DDTask được viết bên trong MIDlet private class DTTask extends TimerTask{ public final void run () { //nếu giá trị hiện tại của gDownload < giá trị cực đại thì tiếp tục tăng, không thì dừng lại if (gDownload.getValue() < gDownload.getMaxValue()) gDownload.setValue(gDownload.getValue()+1); else cancel(); //xoá bộ định thời } } 50 Java Mobile 4.3.3. String Item: Đối tượng StringItem dùng để hiển thị 1 đoạn văn bản lên màn hình. Người dùng chỉ đựơc phép xem mà không được thay đổi nội dung đoạn văn bản này. Các phương thức và chức năng tương ứng của lớp StringItem: Lớp StringItem: javax.microedition.lcdui.StringItem Phương thức Chức năng StringItem (String label, String text) Khởi tạo một đối tượng StringItem String getText () Lấy nội dung đoạn văn bản void setText (String text) Gán nội dung đoạn văn bản cần hiển thị Bảng 4.6 Lớp StringItem Để lấy giá trị nhãn (label) hay thay đổi nội dung nhãn có thể dùng các phương thức getLabel(), setLabel(String label) của lớp Item. VD: //tạo một đối tượng StringItem StringItem siText = new StringItem(“User: ”, “John”); //gắn vào form fmMain.append(siText); //sau đó muốn hiển thị 1 nội dung khác, chỉ cần thay đổi label và text của đối tượng, //không cần tạo 1 đối tượng StringItem mới. siText.setLabel(“UserID: ”); siText.setText(“12345”); 51 Java Mobile Hình 4.5 Giao diện đối tượng StringItem Đối tượng lớp String cũng có thể append() vào Form để hiển thị 1 đoạn văn bản nhưng không có hai phần nhãn và nội dung riêng biệt như StringItem. Tuỳ yêu cầu của chương trình mà người lập trình có thể lựa chọn đối tượng phù hợp để sử dụng. 52 Java Mobile 4.3.4. TextField: Lớp TextField được sử dụng khi ứng dụng cần người dùng nhập liệu. Không chỉ nhập dữ liệu text mà còn có thể nhập số, password, địa chỉ Để hỗ trợ cho người lập trình, MIDP đã định nghĩa sẵn một số các ràng buộc (constraints) để đối tượng tự động kiểm tra tính hợp lệ của dữ liệu nhập vào. Các ràng buộc này là các hằng lớp của lớp TextField gồm: o EMAILADDR: người dùng chỉ được phép nhập dữ liệu đúng chuẩn của một địa chỉ email. o NUMERIC: chỉ được phép nhập số (có thể là âm hay dương), nếu muốn giới hạn các giá trị được phép nhập thì ứng dụng phải tự xử lý. o PASSWORD: dữ liệu nhập vào sẽ đựơc hiển thị lên màn hình với dạng các dấu *. o PHONENUMBER: dữ liệu nhập phải đúng chuẩn của số điện thoại. o URL: dữ liệu nhập phải có dạng 1 URL và có thể được sử dụng khi kiểm tra ràng buộc cho đối tượng TextBox. Các ràng buộc này được biểu diễn với dạng một số nguyên kiểu int, giá trị được đề cập trong bảng sau: Tên ràng buộc Giá trị Biểu diễn nhị phân ANY 0 00000000 00000000 00000000 EMAILADDR 1 00000000 00000000 00000001 NUMERIC 2 00000000 00000000 00000010 PHONENUMBER 3 00000000 00000000 00000011 URL 4 00000000 00000000 00000100 PASSWORD 65536 (0x10000) 00000001 00000000 00000000 CONSTRAINT_MASK 65635 (0xFFFF) 00000000 11111111 11111111 Bảng 4.7 Các Ràng Buộc của TextField Các giá trị của ràng buộc là các số nguyên liên tục nên các ràng buộc này phải sử dụng độc lập, không được kết hợp với nhau vì có thể gây sai sót. 53 Java Mobile Vd: TextField.EMAILADDR | TextField.NUMERIC = 00000000 00000000 00000001 OR 00000000 00000000 00000010 = 00000000 00000000 00000011 = TextField.PHONENUMBER Ngoại trừ PASSWORD có thể kết hợp với một trong các ràng buộc còn lại bằng toán tử OR mà không gây nhầm lẫn cho chương trình. Vd: TextField.ANY | TextField.PASSWORD = 00000000 00000000 00000000 OR 00000001 00000000 00000000 = 00000001 00000000 00000000 MIDP cũng cung cấp sẵn giá trị CONSTRAINT_MASK để có thể dễ dàng kiểm tra lại ràng buộc nào đã được sử dụng bằng cách dùng toán tử AND giữa giá trị ràng buộc của đối tượng TextField và CONSTRAINT_MASK Vd: tfPassword.getConstraints() 00000001 00000000 00000000 TextField.CONSTRAINT_MASK 00000000 11111111 11111111 AND 00000000 00000000 00000000 Sau đó lấy giá trị này so sánh với các ràng buộc để biết đối tượng TextField đó đã được áp ràng buộc nào. 54 Java Mobile Các phương thức và chức năng tương ứng của lớp TextField: Lớp TextField: javax.microedition.lcdui.TextField Phương thức Chức năng TextField (String label, String text, int maxSize, int constraints) Khởi tạo đối tượng TextField với maxSize là số ký tự tối đa người dùng có thể nhập và constraints là các ràng buộc khi nhập void delete (int offset, int length) Xóa length ký tự từ vị trí offset void insert (String src, int pos) Chèn chuỗi src vào TextField từ vị trí pos void insert (char[] data, int offset, int length, int position) Chèn các length ký tự từ vị trí offset trong chuỗi data vào TextField từ vị trí position void setChars (char[] data, int offset, int length) Gán giá trị cho TextField bằng length ký tự từ vị trí offset trong chuỗi data void setString (String text) Gán giá trị text cho TextField int getChars (char[] data) lấy giá trị TextField ra một mảng ký tự String getString () lấy giá trị TextField int getConstraints () Lấy giá trị ràng buộc của TextField void setConstraints (int constraints) Gán giá trị ràng buộc cho TextField int getMaxsize () Lấy kích thứơc tối đa của TextField void setMaxsize (int maxSize) Gán kích thứơc tối đa của TextField int getCaretPosition () Lấy vị trí con trỏ hiện thời int size () Lấy kích thước thật của TextField (số ký tự hiện tại của TextField) Bảng 4.8 Lớp TextField VD: //tạo các đối tượng TextField để nhập địa chỉ mail, số điện thoại TextField tfAddr = new TextField (“Addr:”,””,20,TextField.EMAILADDR); TextField tfPhone = new TextField (“Phone:”, ””, 10, TextField.PHONENUMBER); //gắn vào Form 55 Java Mobile fmMain.append (tfAddr); fmMain.append (tfPhone); Hình 4.6 Giao diện đối tượng TextField 56 Java Mobile 4.3.5. ChoiceGroup: Lớp ChoiceGroup được sử dụng để biểu diễn một danh sách các khả năng cho người dùng lựa chọn. ChoiceGroup kế thừa từ interface Choice, gồm hai dạng: • Cho phép chọn nhiều khả năng (Multiple ): Thể hiện danh sách các khả năng lên màn hình dạng checkbox và cho phép người đánh dấu check lên các lựa chọn. • Chỉ được phép chọn một khả năng (Exclusive ): Thể hiện danh sách các khả năng lên màn hình cùng các radio button và chỉ cho phép người dùng chọn duy nhất một khả năng. Các phương thức và chức năng tương ứng của lớp ChoiceGroup: Lớp ChoiceGroup: javax.microedition.lcdui.ChoiceGroup Phương thức Chức năng ChoiceGroup (String label, int choiceType) Khởi tạo đối tượng ChoiceGroup với choiceType là loại lựa chọn Choice.EXCLUSIVE hay Choice.MULTIPLE Với Exclusive ChoiceGroup phần tử đầu tiên tự động được gán là phần tử được chọn. ChoiceGroup (String label, int choiceType, String[] strElements, Image[] iElements) Khởi tạo đối tượng ChoiceGroup, cho trước các khả năng lựa chọn và biểu tượng của từng khả năng int append (String strPart, Image iPart) Thêm một phần tử (1 khả năng) vào ChoiceGroup (vào cuối danh sách) int delete (int position) Xoá phần tử ở vị trí position của ChoiceGroup void insert (int position, String strPart, Image iPart) Chèn một phần tử vào vị trí position void set (int position, String strPart, Image iPart) Gán giá trị và biểu tượng cho phần tử ở vị trí position 57 [...]... các thành phần hiển thị trên màn hình hình giao diện khác được hiển thị đồng thời với TextField 2 cách: Chỉ có thể thêm một Command CommandListener và dùng CommandListener để ItemStateListener Bắt sự kiện lắng nghe và bắt sự kiện Bảng 4.15 So sánh TextField và TextBox Các phương thức và chức năng tương ứng của lớp TextBox: Lớp TextBox: javax.microedition.lcdui.TextBox Phương thức Chức năng TextBox... tượng Ticker Ticker tkMessage = new Ticker (“Wellcome to J2ME, have a nice day!!!”); //gắn vào form fmMain.setTicker(tkMessage); Hình 4.13 Giao diện Ticker 77 Java Mobile Chương 5: Giao diện đồ họa cấp thấp Đồ hoạ cấp thấp trong J2ME được hỗ trợ chủ yếu qua hai lớp chính là Canvas và Graphics Lớp Canvas có dạng một phông có kích thước cố định và những gì vẽ lên phông này sẽ được hiển thị cho người dùng... những ngữ cảnh đồ họa (graphics context)) Lớp Graphics hỗ trợ vẽ các đối tượng đường thẳng, đừơng tròn, hình chữ nhật, text… cũng như các phương thức chọn màu và font chữ 5.1 Canvas: Canvas là lớp con của lớp Displayable (ngang cấp với lớp Screen), nghĩa là có thể gắn thêm các đối tượng Command vào Canvas để bắt sự kiện như Form Khi sử dụng, không tạo trực tiếp một đối tượng Canvas mà xây dựng một lớp kế... ImageItem.LAYOUT_NEWLINE_AFTER 00000010 00000000 -logical OR 00000010 00000010 62 Java Mobile Các phương thức và chức năng tương ứng của lớp ImageItem: Lớp ImageItem: javax.microedition.lcdui.ImageItem Phương thức Chức năng ImageItem (String label, Image Tạo một đối tượng ImageItem từ đối tượng img, int layout, String altText) Image img, với định dạng layout, và chuỗi thay thế altText(chuỗi này dùng thay... List tự gọi hàm tử bất kỳ này khi người dùng chọn 1 CommandListener: gắn một phần tử bất kỳ, 2 dạng List còn Command để lắng nghe và gọi lại phải thêm 1 command để phương thức commandAction() Bắt sự kiện bắt) khi có sự kiện phát sinh Bảng 4.13 So sánh List và ChoiceGroup Các phương thức và chức năng tương ứng của lớp List: Lớp List: javax.microedition.lcdui.List Phương thức List (String title, int... listType, Tạo một đối tượng List cho trước phần tử và String[] strElements, Image[] biểu tượng dưới dạng mảng strElements và 65 Java Mobile imElements ) imElements int append (String strPart, Image Thêm một phần tử vào cuối danh sách imPart) void delete (int position) Xoá một phần tử ở vị trí position void insert (int position, String Chèn một phần tử vào vị trí position strPart, Image imPart) void set... xuống, hoành độ x tăng dần theo chiều từ trái sang phải Độ dày mặc định của các đối tượng đồ hoạ trong J2ME là 1 pixel Đối tượng Canvas đặc trưng bởi 2 giá trị là chiều dài và chiều rộng Hai giá trị này là cố định cho các đối tượng Canvas khác nhau đựơc tạo lập trong cùng một thiết bị và phụ thuộc vào loại thiết bị di động Các phương thức của lớp Canvas để truy vấn các giá trị này: Lớp Canvas: javax.microedition.lcdui.Canvas... Command.EXIT, 1); addCommand(cmExit); setCommandListener(this); 82 Java Mobile public void commandAction(Command c, Displayable d) { if (c == cmExit) { } } } 5.1.3 .2 Bắt sự kiện cấp thấp: Sử dụng mã phím(key code) Mã phím là các giá trị nguyên gán cho các phím tương ứng trong thiết bị di động Các mã phím này được gán với các tên tương ứng cho dễ nhớ như: public static final int KEY_NUM0 = 48; public... final int KEY_NUM0 = 48; public static final int KEY_NUM1 = 49; … Bảng mã phím các phím bàn phím ITU-T ( 0-9 , *, #) Lớp Canvas: javax.microedition.lcdui.Canvas Tên Giá trị KEY_NUM0 48 KEY_NUM1 49 KEY_NUM2 50 KEY_NUM3 51 KEY_NUM4 52 KEY_NUM5 53 KEY_NUM6 54 KEY_NUM7 55 KEY_NUM8 56 KEY_NUM9 57 KEY_STAR 42 KEY_POUND 35 Bảng 5.4 Mã Phím 83 ... bắt sự kiện cho đối tượng List, phải gán đối tượng ở trạng thái lắng nghe, nghĩa là sử dụng phương thức setCommandListener() cho đối tượng List này Sau đó bắt sự kiện và xử lý sự kiện trong phương thức commandAction() Exclusive và multiple List không tự động gửi sự kiện Do đó, ta phải gắn một command (vd: command Save)vào đối tượng List để lấy trạng thái của đối tượng sau khi người dùng lựa chọn Khi người . người lập trình có thể lựa chọn đối tượng phù hợp để sử dụng. 52 Java Mobile 4.3.4. TextField: Lớp TextField được sử dụng khi ứng dụng cần người dùng nhập liệu. Không chỉ nhập dữ liệu text. trước các khả năng lựa chọn và biểu tượng của từng khả năng int append (String strPart, Image iPart) Thêm một phần tử (1 khả năng) vào ChoiceGroup (vào cuối danh sách) int delete (int position). người dùng chọn 1 phần tử bất kỳ, 2 dạng List còn lại phải thêm 1 command để bắt) Bảng 4.13 So sánh List và ChoiceGroup Các phương thức và chức năng tương ứng của lớp List: Lớp List: javax.microedition.lcdui.List

Ngày đăng: 12/08/2014, 10:20

Từ khóa liên quan

Mục lục

  • Lời Cảm Ơn

  • Mục Lục

  • Danh Sách Các Hình

  • Danh Sách Các Bảng

  • Lời Nói Đầu

  • Phần 1: Kiến thức nền tảng J2ME

    • Chương 1: Tổng quan về J2ME

      • 1.1 Giới thiệu J2ME (Java 2 Micro Edition)

      • 1.2 Lý do chúng ta cần J2ME

      • 1.3 Các thành phần của J2ME:

        • 1.3.1 Configuration:

        • 1.3.2 Profile:

        • 1.3.3 Máy ảo Java

        • Chương 2: Giới thiệu CLDC và MIDP

          • 2.1. CLDC

            • 2.1.1. Yêu cầu phần cứng:

            • 2.1.2. Yêu cầu phần mềm:

            • 2.1.3. Máy ảo Java:

            • 2.2. MIDP:

              • 2.2.1. Yêu cầu phần cứng:

              • 2.2.2. Yêu cầu phần mềm:

              • 2.2.3. Cấu trúc MID Profile:

              • 2.2.4. MIDlet Suite:

              • 2.2.5. Môi trường phát triển ứng dụng J2ME

              • Chương 3: Các vấn đề cơ bản của chương trình MIDlet

                • 3.1. Cấu trúc cơ bản:

                • 3.2. Xây dựng một ứng dụng MIDlet:

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan