nguyenthuctuan
New Member
Download miễn phí Giáo trình Lập trình J2SE
Nếu chỉ cần đọc ghi những đoạn text vào record, thì ví dụ trên là quá đủ. Tuy nhiên, thực
tế là ta cần lưu những giá trị khác: String, int, boolean, v.v. Trong trường hợp này, chúng ta
cần sử dụng stream để đọc và ghi record. Việc sử dụng stream giúp chúng ta linh động và nâng
cao hiệu quả của việc đọc và ghi dữ liệu vào RecordStore. Chúng ta sử dụng nextRecord() để
duyệt đến record sau đó, ngoài ra còn có previousRecord() giúp duy ệt về record trước đó. Nếu
muốn bắt đầu tại vị trí cuối cùng của recordstore ta chỉ cần gọi hàm previousRecord() ngay khi
mở recordstore, nó sẽ trả về dòng cuối cùng.
http://cloud.liketly.com/flash/edoc/jh2i1fkjb33wa7b577g9lou48iyvfkz6-swf-2014-02-25-giao_trinh_lap_trinh_j2se.ESJ9vSgCDv.swf /tai-lieu/de-tai-ung-dung-tren-liketly-59075/
Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí
Tóm tắt nội dung tài liệu:
ể hiện. Hệ thống tọa độ cho lớp Canvas có tâm tọa độ là điểm trái trên củathiết bị trình bày. Giá trị x tăng dần về phía phải, giá trị y tăng dần khi đi xuống phía dưới.
Khi vẽđộ dày bút vẽ là một điểm ảnh
Các cách sau đây sẽ giúp xác định chiều rộng và chiều cao của canvas:
int getWidth():xác định chiều rộng của canvas
int getHeight ():xác định chiều cao của canvas
Chiều rộng và chiều cao của Canvas cũng thay mặt cho toàn bộ diện tích khung vẽ có
thể trên thiết bị trình bày. Nói cách khác, chúng không thể chỉ định kích thước cho canvas,
mà phần mềm trên một thiết bị MIDP sẽ trả về diện tích lớn nhất có thể có đối với một thiết
bị cho trước.
b) Tạo một đối tượng Canvas
Bước đầu tiên để làm việc với một lớp Canvas là tạo ra một lớp thừa kế từ lớp
Canvas:
class TestCanvas extends Canvas implements CommandListener { private
CommandcmdExit; ... display = Display.getDisplay(this); cmdExit = new
Command("Exit", Command.EXIT, 1); addCommand(cmdExit);
}
36
setCommandListener(this); ... protected voidpaint(Graphics g) { // Draw
onto the canvas
}
}
TestCanvas canvas = new TestCanvas(this);
c) Vẽ trên đối tượng Canvas
cách paint của lớp Canvas cho phép bạn vẽ các hình dạng, vẽ ảnh, xuất
chuỗi. Đoạn mã sau minh họa việc xóa màn hình thể hiện bằng một màu trắng:
protected voidpaint(Graphics g) {
// Set background color to white
g.setColor(255, 255, 255);
// Fill the entire canvas
g.fillRect(0, 0, getWidth(), getHeight());
Chúng ta có thể sử dụng một tham chiếu đến một đối tuợng Graphics bên trong thân
cách paint() để thực hiện công việc vẽ thực sư
d) Sự kiện hành động
Cũng như các thành phần Form, List, và TextBox, một Canvas có thể xử lý các
sự kiện Command. Chúng ta có thể xử lý các sự kiện Command trên thành phần Canvas
cung cách như các thành phần khác Đoạn mã sau minh họa việc xử lý sự kiện Command
trên thành phần Canvas:
class TestCanvas extends Canvas implements CommandListener {
private Command cmdExit;
display = Display.getDisplay(this); cmdExit = new
Command("Exit", Command.EXIT, 1); addCommand(cmdExit);
setCommandListener(this); ... protected voidpaint(Graphics g) { //
Draw onto the canvas
37
}
public void commandAction(Command c, Displayable d) { if (c ==
cmdExit)
…
}
}
e) Mã phím
Trong trường hợp xử lý các hành động của các phím mềm, một Canvas có thể truy
cập đến 12 mã phím. Những mã này được đảm bảo luôn luôn có trên bất kỳ các thiết bị
MIDP nào
KEYNUM0
KEYNUM1
KEYNUM2
KEYNUM3
KEYNUM4
KEYNUM5
KEYNUM6
KEY_NUM7
KEYNUM8
KEYNUM9
KEYSTAR
KEYPOUND
Năm cách để xử lý các mã phím là:
void keyPressed(int keyCode)
void keyReleased(int keyCode)
}
38
void keyRepeated(int keyCode)
boolean hasRepeatEvents()
String getKeyName(int keyCode)
f) Các hành động trong xử lý các trò chơi
39
MIDP thường được sử dụng để tạo các trò chơi trên nền Java. Các hằng số sau đã được
định nghĩa để xử lý các sự kiện có liên quan đến trò chơi trong MIDP UP, DOWN,
LEFT, RIGHT, FIRE, GAME_A, GAME_B, GAME_C, GAME_D Nói một cách đơn
giản thì các giá trị này được ánh xạ thành các phím mũi tên chỉhướng của thiết bị, nhưng
không phải tất cả các thiết bị di động đều có những giá trịnày. Nếu một thiết bị di động
thiếu các phím mũi tên thì các hành động của trò chơi sẽđược ánh xạ vào các nút bấm, ví
dụ phím trái được ánh xạ vào phím số 2, phím phải được ánh xạ vào phím số 5, và cứ tiếp
tục như thế. Hình dưới đây cho thấy các hành động của trò chơi sẽ được ánh xạ lên một
thiết bị di động dựa trên khả năng của các phím chỉ hướng
g) Xác định các hành động của trò chơi
Đoạn mã sau đây mô tả một cách xác định các hành động của trò chơi để từ đó gọi
các cách thích hợp dựa trên các hành động xảy ra
40
protected void keyPressed(int keyCode) {
switch (getGameAction(keyCode)) { case
Canvas.FIRE: shoot(); break; case
Canvas.RIGHT: goRight(); break;
...}
}
Một lựa chọn nữa là có thể tạo một tham chiếu cho mỗi hành động của trò chơi thông qua
quá trình khởi tạo giá trị cho các biến
// Initialization
keyFire = getKeyCode(FIRE);
keyRight = getKeyCode(RIGHT);
keyLeft = getKeyCode(LEFT); ... //
Runtime
protected void keyPressed(int keyCode) { if
(keyCode == keyFire) shoot(); else if
(keyCode == keyRight) goRight()
}
Đoạn mã dưới đây minh họa một số chức năng của Canvas và cách xử lý phím
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class KeyMapping extends MIDlet {
private Display display; // The display
private KeyCodeCanvas canvas; // Canvas
41
public KeyMappingQ {
display = Display.getDisplay(this); canvas = new
KeyCodeCanvas(this);
}
protected void startApp() {
display.setCurrent( canvas );
}
protected voidpauseApp() {}
protected void destroyApp( boolean unconditional) {} public void
exitMIDlet() {
destroyApp(true);
notifyDestroyed();
}
}
/* -------------------------------- * Class KeyCodeCanvas* ------------------------------------ */
class KeyCodeCanvas extends Canvas implements CommandListener { private
Command cmExit; //Exit midlet private String keyText = null; // Key code text
private KeyCodes midlet;
public KeyCodeCanvas(KeyCodes midlet) { this.midlet =
midlet;
// Create exit command and listen for events cmExit = new
Command("Exit", Command.EXIT, 1); addCommand(cmExit);
setCommandListener(this);
}
protected voidpaint(Graphics g) {
// Clear the background (to white) g.setColor(255,
255, 255); g.fillRect(0, 0, getWidth(), getHeight());
// Set color and draw text if (keyText != null) { //
Draw with black pen g.setColor(0, 0, 0); // Center
text
g.drawString(keyText, getWidth()/2, getHeight()/2, Graphics.TOP |
Graphics.HCENTER);
}
}
public void commandAction(Command c, Displayable d) {
}
42
if (c == cmExit) midlet.exitMIDlet();
protected void keyPressed(int keyCode) { keyText =
getKeyName(keyCode); repaint();
}
}
h) Sự kiện con trỏ
Trong phần này chúng ta sẽ quản lý sự kiện con trỏ trong một Canvas. Những sựkiện
này được thiết kếđể làm thuận tiện cho việc tương tác với các thiết bị có dạng con trỏ. Một
số cách được cung cấp nhằm hỗ trợ cho việc xử lý sự kiện con trỏ:
boolean hasPointerEvents()
boolean hasPointerMotionEvents()
voidpointerPressed(int x, int y)
voidpointerReleased(int x, int y)
voidpointerDragged(int x, int y)
Các cách trên có thể tự giải thích chức năng thông qua tên của chính mình.
Ví dụ như cách hasPointerMotionEvents() trả về một giá trị có kiểu boolean nhằm
chỉ rõ rằng thiết bị di động có hỗ trợ khái niệm “nhấp chuột và rê” hay không. Đoạn chương
trình dưới đây minh họa việc sử dụng các sự kiện con trỏ để thựchiện một chương trình vẽ
đơn giản:
import javax.microedition.midlet.*; import
javax.microedition.lcdui.*; public class
ScratchPad extends MIDlet {
private Display display; // Display object private
ScratchPadCanvas canvas; // Canvas public
ScratchPad() {
display = Display.getDisplay(this); canvas = new
ScratchPadCanvas(this);
}
protected void startApp() {
}
43
display.setCurrent( canvas );
protected voidpauseApp() {}
protected void destroyApp( boolean unconditional){}
public void exitMIDlet() {
destroyApp(true); notifyDestroyed();
}
}
/* ------------* Class ScratchPadCanvas * * Pointer event handling * --------------------- */
class ScratchPadCanvas extends Canvas implements CommandListener {
private Command cmExit; // Exit midlet
private Command cmClear; // Clear display
private int startx = 0;
// Where pointer was clicked
starty = 0; currentx = 0;
// Current location
currenty = 0;
private Scr...