Tải bản đầy đủ (.pdf) (59 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (995.42 KB, 59 trang )


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

Java Mobile
String getString (int position) Lấy giá trị của phần tử ở vị trí position
Image getImage (int position) Lấy biểu tượng của phần tử ở vị trí position
int getSelectedIndex () Lấy vị trí của phần tử được chọn
void setSelectedIndex (int
position, boolean selected)
MULTIPLE: gán giá trị được chọn hay không
(selected) cho phần tử ở vị trí position
EXCLUSIVE: gán giá trị cho phần tử ở vị trí

position là được chọn (không phụ thuộc giá trị
selected)
int getSelectedFlags (boolean[]
selectedArr)
Lưu thông tin kết quả lựa chọn vào mảng
void setSelectedFlags (boolean[]
selectedArr)
Gán kết quả lựa chọn cho đối tượng
ChoiceGroup
boolean isSelected (int position) Kiểm tra phần tử ở vị trí position có được chọn
không
int size () Lấy số phần tử của ChoiceGroup
Bảng 4.9 Lớp ChoiceGroup
*
Bắt sự kiện cho đối tượng ChoiceGroup:
Có thể dùng hai cách để bắt sự kiện cho đối tượng ChoiceGroup:

ItemStateListener: khi Form chứa đối tượng ChoiceGroup đã gọi
phương thức setItemStateListener() thì khi người dùng chọn vào bất cứ
khả năng nào, phương thức itemStateChanged() sẽ được gọi thực hiện.
Cách này nên dùng cho ChoiceGroup dạng chỉ cho phép chọn một khả
năng hoặc một số trường hợp đặc biệt

CommandListener: Khi gắn đối tượng ChoiceGroup vào Form thì tạo
thêm một Command (tên là “OK” chẳng hạn). Khi người dùng chọn xong
thì nhấn chọn Command này và chương trình sẽ gọi phương thức
commandAction() để xử lý. Cách này có thể sử dụng để bắt sự kiện cho
cả hai loại ChoiceGroup cũng như các đối tượng Item khác.
Vd:
58


Java Mobile
//Tạo một đối tượng ChoiceGroup chỉ cho phép chọn một khả năng:
ChoiceGroup cgExclusive = new ChoiceGroup( “Email Options”,
Choice.EXCLUSIVE);
//lần lượt thêm các phần tử cho đối tượng, không kèm biểu tượng
cgExclusive.append(“Read”, null);
cgExclusive.append(“Forward”, null);
int iReplyIndex = cgExclusive.append(“Reply”, null);
cgExclusive.append(“Delete”, null);

//gán “Reply” là phần tử được chọn
cgExclusive.setSelectedIndex(iReplyIndex, true);
//gắn vào Form
fmMain.append(cgExclusive);
fmMain.setItemStateListener(this);

//bắt sự kiện
public void itemStateChanged(Item item) {
if (item==cgExclusive) {

}
}

Hình 4.7 Giao diện đối tượng ChoiceGroup chế độ một lựa chọn
59

Java Mobile
//tạo 1 đối tượng ChoiceGroup cho phép chọn nhiều khả năng:
ChoiceGroup cgMultiple = new ChoiceGroup( “Multiple Choice”,

Choice.MULTIPLE);
//lần lượt thêm các phần tử cho đối tượng, không kèm biểu tượng
cgMultiple.append(“Auto Indent”, null);
cgMultiple.append(“Replace Tabs”, null);
cgMultiple.append(“Wrap Text”, null);
//tạo 1 command OK để bắt sự kiện
Command cmOK = new Command (“OK”, Command.Screen, 1);
//gắn vào Form
int iChoiceGroupIndex = fmMain.append(cgMultiple);
fmMain.addCommand(cmOK);
fmMain.setCommandListener(this);

//xử lý sự kiện
public void commandAction (Command c, Displayable d) {
if (c==cmOK) {

}
}

Hình 4.8 Giao diện đối tượng ChoiceGroup chế độ nhiều lựa chọn

60

Java Mobile
4.3.6. Image và ImageItem:
4.3.6.1. Image:
Chứa dữ liệu ảnh đồ hoạ, gồm hai dạng :
• Cố định (Immutable): thường đựơc nạp từ resource của ứng dụng, từ
file hay chuyển từ dạng Image có thể thay đổi (Mutable) sang. Dạng hình
ảnh này chủ yếu được dùng làm biểu tượng cho các thành phần đồ hoạ khác

như ChoiceGroup, Form, List, Alert Một khi đã tạo đối tượng kiểu
Immutable Image thì không thể thay đổi hình ảnh đựơc nữa.
• Có thể thay đổi (Mutable): có thể thay đổi một cách dẽ dàng. Khi tạo
đối tượng kiểu Mutable Image, một vùng nhớ trống sẽ được cấp phát dựa
trên kích thước khi khai báo. Khi muốn hiển thị Image dạng này lên màn
hình phải gọi phương thức paint() của lớp Canvas sẽ được đề cập trong
phần đồ hoạ cấp thấp.

Các phương thức và chức năng tương ứng của lớp Image:
Lớp Image: javax.microedition.lcdui.Image
Phương thức Chức năng
static Image createImage (String
name)
Tạo một đối tượng Immutable Image từ
resource
static Image createImage (Image
source)
Tạo một đối tượng Immutable Image từ một
đối tượng Image source khác
static Image createImage (byte[]
data, int offset, int length)
Tạo một đối tượng Immutable Image từ mảng
dữ liệu (lấy length bytes từ vị trí offset của
mảng byte data)
static Image createImage (int
width, int height)
tạo một đối tượng Mutable Image, cho trứơc
kích thứơc dài rộng của ảnh
Graphics getGraphics () Lấy đối tượng Graphics tương ứng của
Mutable Image

61

Java Mobile
int getHeight () Lấy chiều cao của đối tượng Image
int getWidth () Lấy chiều rộng của đối tượng Image
boolean isMutable () kiểm tra đối tượng có là Mutable Image không
Bảng 4.10 Lớp Image
4.3.6.2. ImageItem:
Lớp ImageItem cung cấp các phương thức để điều khiển và sắp xếp các đối tượng
Image đựơc gắn trong Form. Lớp ImageItem đã cung cấp sẵn các định dạng vị trí
sẵn cho hình ảnh, bao gồm:

Định dạng Giá trị nhị phân Ý nghĩa
LAYOUT_DEFAULT 00000000 00000000 dùng định dạng mặc
định của thiết bị
LAYOUT_LEFT 00000000 00000001 canh trái
LAYOUT_RIGHT 00000000 00000010 canh phải
LAYOUT_CENTER 00000000 00000011 canh giữa
LAYOUT_NEWLINE_BEFORE 00000001 00000000 xuống hàng trước khi
vẽ Image
LAYOUT_NEWLINE_AFTER 00000010 00000000 xuống hàng sau khi vẽ
Image.
Bảng 4.11 Định dạng ImageItem
Các định dạng trên có thể dùng kết hợp với nhau trong một đối tượng ImageItem
bằng phép toán OR .

Vd: ImageItem.LAYOUT_RIGHT 00000000 00000010
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
img, int layout, String altText)
Tạo một đối tượng ImageItem từ đối tượng
Image img, với định dạng layout, và chuỗi thay
thế altText(chuỗi này dùng thay thế cho image
khi không thể hiện được lên màn hình thiết bị)
Image getImage () Lấy đối tượng Image của ImageItem
void setImage (Image img) Gán đối tượng Image cho ImageItem
int getLayout() Lấy giá trị định dạng của ImageItem
void setLayout (int layout) Gán giá trị định dạng cho ImageItem
String getAltText () Lấy giá trị chuỗi thay thế
void setAltText () Gán giá trị chuỗi thay thế
Bảng 4.12 Lớp ImageItem
Vd:
//tạo Immutable Image từ File và hiển thị trong Form
Image img = Image.createImage(“image.png”);
//.png (Portable NetWork Graphics) là định dạng file ảnh trong thiết bị di động
ImageItem imageItem = new ImageItem (null, img,
ImageItem.LAYOUT_CENTERImageItem.LAYOUT_NEWLINE_BEFORE,null);
fmMain.append(imageItem);

//tạo đối tượng ChoiceGroup có các biểu tượng tương ứng cho các khả năng lựa chọn
Image image[] = { Image.createImage(“/up.png”),

Image.createImage(“/down.png”),
Image.createImage(“/help.png”)} ;
String options[] = {“Upload”, “Download”, “Help”};
//Tạo đối tượng ChoiceGroup dùng mảng
ChoiceGroup cgImage = new ChoiceGroup (“Select option”,
Choice.EXCLUSIVE, options, images);
63

Java Mobile
4.4. List:
List dùng để hiển thị các danh sách các khả năng cho người dùng lựa chọn. List
gồm 3 dạng:
• Multiple: cho phép người dùng lựa chọn nhiều khả năng, tương tự
Multiple ChoiceGroup.
• Exclusive: cho phép người dùng lựa chọn duy nhất một khả năng,
tương tự Exclusive ChoiceGroup.
• Implicit: chỉ hiển thị danh sách các khả năng lựa chọn dạng menu.
*
Bắt sự kiện cho các đối tượng List:
Để 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 dùng chọn command Save tức người dùng
đã chọn xong các khả năng, ta sẽ bắt sự kiện này và xử lý sự kiện trong phương
thức commandAction().
Implicit List gửi sự kiện mỗi khi người dùng lựa chọn một phần tử trong List. Khi
đó, nếu đã gán listener cho đối tượng thì sự kiện phát sinh sẽ gọi phương thức
commandAction().


* So sánh giữa lớp List và lớp ChoiceGroup:
Giống nhau:
• Cả hai đều kế thừa từ interface Choice
• Cả hai đều cho phép tạo đối tượng hỗ trợ một lựa chọn duy nhất(radio
button ) hoặc nhiều lựa chọn (checkbox).
• Có thể thêm các đối tượng Command khác hiển thị cùng lúc trên màn
hình để hỗ trợ việc bắt sự kiện.
Khác nhau:
64

Java Mobile

ChoiceGroup List
Hiển thị trên
màn hình
ChoiceGroup là 1 phần của
Form. Nghĩa là có thể có các
thành phần giao diện khác được
hiển thị đồng thời với
ChoiceGroup
List là thực thể duy nhất hiển
thị trên màn hình.
Phân loại
ChoiceGroup gồm 2 dạng:
MULTIPLE (check box),
EXCLUSIVE (radio button)
List gồm 3 dạng:
MULTIPLE (check box),
EXCLUSIVE (radio button) và

IMPLICIT (menu)
Bắt sự kiện
2cách:
ItemStateListener: gọi phương
thức itemStateChanged()) khi
người dùng lựa chọn một phần
tử bất kỳ.
CommandListener: gắn một
Command để lắng nghe và gọi
phương thức commandAction()
khi có sự kiện phát sinh
Chỉ có 1 cách duy nhất là dùng
CommandListener. List gọi
commandAction() để bắt sự
kiện (Implicit List tự gọi hàm
này khi 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
Phương thức Chức năng
List (String title, int listType) Tạo một đối tượng List rỗng (chưa có các
phần tử) với listType thuộc 1 trong 3 dạng:
Choice.IMPLICIT, Choice.EXPLICIT,
Choice.MULTIPLE.
List (String tile, int listType,
String[] strElements, Image[]

Tạo một đối tượng List cho trước phần tử và
biểu tượng dưới dạng mảng strElements và
65

Java Mobile
imElements ) imElements.
int append (String strPart, Image
imPart)
Thêm một phần tử vào cuối danh sách
void delete (int position) Xoá một phần tử ở vị trí position
void insert (int position, String
strPart, Image imPart)
Chèn một phần tử vào vị trí position
void set (int position, String strPart,
Image imPart)
Gán giá trị (thay thế bằng phần tử mới) cho
phần tử ở vị trí position
String getString (int position) Lấy giá trị phần tử ở vị trí position
Image getImage (int position) Lấy biểu tượng phần tử ở vị trí position
int getSelectedIndex () Lấy vị trí phần tử được chọn
void setSelectedIndex (int position,
boolean selected)
MULTIPLE: gán giá trị được chọn hay
không (selected) cho phần tử ở vị trí position
EXCLUSIVE, IMPLICIT: gán giá trị cho
phần tử ở vị trí position là được chọn (không
phụ thuộc giá trị selected)
int getSelectedFlags (boolean[]
selectedArr)
Lưu thông tin kết quả lựa chọn vào mảng

void setSelectedFlags (boolean[]
selectedArr)
Gán kết quả lựa chọn cho đối tượng List
boolean isSelected (int position) Kiểm tra phần tử ở vị trí position có được
chọn không
int size () Lấy số phần tử của List
Bảng 4.14 Lớp List
VD:
//tạo đối tượng Implicit List với các phần tử cho trước:
//tạo mảng các phần tử
String options[]={“Next”, “Previous”, “New”};
//tạo mảng các biểu tượng
Image images[]={Image.createImage(“/next.png”),
66

Java Mobile
Image.createImage(“/prev.png”), Image.createImage(“/new.png”),}
List lsImplicit = new List (“Document option:”, Choice.IMPLICIT, options,
images);
//gán đối tượng vào trạng thái lắng nghe
lsImplicit.setCommandListener(this);
//bắt sự kiện và xử lý
public void commandAction(Command c, Displayable s) {
if (c == List.SELECT_COMMAND) {
switch (lsImplicit.getSelectedIndex()) {
case 0:
System.out.println("Next");
break;
case 1:
System.out.println("Previous");

break;
case 2:
System.out.println("New");
break;
}
}
}

Hình 4.9 Giao diện đối tượng List dạng menu
67

Java Mobile
//tạo đối tượng Multiple hay Exclusive List:
List lsMultiple = new List (“Multiple choice”, Choice.MULTIPLE);
List lsExclusive = new List (“Exclusive choice”, Choice.Exclusive);
//thêm command Save để bắt sự kiện
Command cmSave = new Command (“Save”, Command.SCREEN, 1);
lsMultiple.addCommand(cmSave);
//gán đối tượng ở trạng thái lắng nghe
lsMultiple.SetCommandListener(this);
//bắt sự kiện
public void commandAction (Command c, Displayable d) {
if (c==cmSave) {
// xử lý sự kiện
}
}


Hình 4.10 Giao diện đối tượng List cho phép chọn nhiều lựa chọn


68

Java Mobile
4.5. TextBox:
TextBox là dạng giao diện dành cho người dùng nhập liệu, tương tự TextField.
* So sánh giữa lớp TextBox và lớp TextField:
Giống nhau:
• Cả hai lớp đều sử dụng chung các kiểu ràng buộc của lớp TextField
(gồm TextField.ANY, TextField.EMAILADDR, TextField.NUMERIC,
TextField.PASSWORD, TextField.PHONENUMBER, TextField.URL)
• Số ký tự nhập vào có thể nhỏ hơn hay bằng số ký tự tối đa của đối
tượng được gán khi khởi tạo. Chức năng cuộn màn hình được hỗ trợ nếu
màn hình không đủ hiển thị toàn bộ nội dung nhập.
Khác nhau:

TextField TextBox
Hiển thị
trên màn
hình
TextField là 1 phần của Form.
Nghĩa là có thể có các thành phần
giao diện khác được hiển thị đồng
thời với TextField
TextBox là thực thể duy nhất
hiển thị trên màn hình.
Bắt sự kiện
2 cách:
CommandListener
ItemStateListener
Chỉ có thể thêm một Command

và dùng CommandListener để
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 (String title, String text, int
maxSize, int constraints)
Tạo một đối tượng TextBox với maxSize là
số ký tự tối đa được phép nhập và
constraints là các ràng buộc nhập liệu.
void delete (int offset, int length) Xóa length ký tự từ vị trí offset
void insert (String source, int Chèn chuỗi source vào TextBox từ vị trí
69

Java Mobile
position)
position
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 TextBox từ vị trí position
void setChars (char[] data, int offset,
int length)
Gán giá trị cho TextBox bằng length ký tự
từ vị trí offset trong chuỗi data
void setString (String text) Gán giá trị text cho TextBox
int getChars (char[] data) lấy giá trị TextBox ra một mảng ký tự
String getString () lấy giá trị TextBox
int getConstraints () Lấy giá trị ràng buộc của TextBox

void setConstraints (int constraints) Gán giá trị ràng buộc cho TextBox
int getMaxSize () Lấy kích thước tối đa của TextBox
void setMaxSize (int maxSize) Gán kích thước tối đa của TextBox
int getCaretPosition () Lấy vị trí con trỏ hiện thời
int size () Lấy số ký tự của dữ liệu nhập vào TextBox
Bảng 4.16 Lớp TextBox
VD:
//tạo một đối tượng TextBox:
TextBox tbName = new TextBox (“Pls enter your name”, null, 20,
TextField.ANY);
//gắn command Save bắt sự kiện
Command cmSave = new Command (“Save”, Command.SCREEN, 1);
tbName.addCommand(cmSave);
// lắng nghe sự kiện
tbName.SetCommandListener(this);

//bắt sự kiện
public void commandAction (Command c, Displayable d) {
if(c==cmSave) {
//xử lý sự kiện

70

Java Mobile
}
}

Hình 4.11 Giao diện đối tượng TextBox
71


Java Mobile
4.6. Alert và AlertType:
4.6.1. Alert:
Đối tượng Alert có dạng một hộp thoại hiển thị thông báo đến người dùng, có thể có
hiển thị hình ảnh kèm theo hoặc không. Một đối tượng Alert gồm 3 thành phần: tiêu
đề, nội dung thông báo và hình ảnh đính kèm.
Alert gồm hai loại:
• Không giới hạn thời gian hiển thị (Modal): Alert hiển thị trên màn
hình cho đến khi người dùng bấm nút tắt.
• Giới hạn thời gian hiển thị (Timed): Alert chỉ hiển thị trên màn hình
trong thời gian nhất định và tự động tắt khi đến hạn.

Các phương thức và chức năng tương ứng của lớp Alert:
Lớp Alert: javax.microedition.lcdui.Alert
Phương thức Chức năng
Alert (String title) Tạo một đối tượng Alert với kiểu mặc
định của thiết bị
Alert (String title, String strText,
Image iImage, AlertType atType)
Tạo đối tượng Alert với tiêu đề title, nội
dung strText, hình iImage và loại atType
cho trước
Image getImage () Lấy đối tượng Image của Alert
void setImage () Gán đối tượng Image cho Alert
String getString () Lấy nội dung thông báo của Alert
void setString (String str) Gán nội dung thông báo cho Alert
int getDefaultTimeout() Lấy thời gian Alert được phép hiển thị
(timeout) mặc định của thiết bị
int getTimeout () Lấy thời gian Alert được phép hiển thị
void setTimeout (int miliseconds) Gán giá trị thời gian Alert được phép hiển

72

×