Vẽ trên đối tượng Canvas:

Một phần của tài liệu 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 (Trang 32 - 35)

Canvas và Screen là hai lớp con của lớp Displayable nên cùng kế thừa phương thức abstract paint() của lớp cha. Trong khi phương thức paint() trong lớp Screen và các lớp con của nó đã được dựng sẵn để vẽ các đối tượng đồ hoạ cấp cao(title, ticker, form, textbox, list, alert…) lên màn hình thì trong lớp Canvas, phương thức này vẫn

được khai báo với từ khoá abstract, nghĩa là phải viết xử lý cho phương thức này ở

lớp con của Canvas (lớp kế thừa mà ta xây dựng để vẽ lên màn hình). abstract public class Displayable {

abstract void paint(Graphics g); }

Java Mobile

public abstract class Canvas extends Displayable { protected abstract void paint(Graphics g); }

public abstract class Screen extends Displayable { abstract void paintContent(Graphics g);

paint(Graphics g){ // gắn tiêu đề //gắn đối tượng Ticker … paintContent(g); } }

public class Form extends Screen {

void paintContent(Graphics g){… } }

public class TextBox extends Screen { void paintContent(Graphics g) {… } }

public class List extends Screen implements Choice { void paintContent(Graphics g){… }

}

public class Alert extends Screen{

void paintContent(Graphics g){… } }

Java Mobile

Các phương thức hỗ trợ vẽ của lớp Canvas:

Lớp Canvas: javax.microedition.lcdui.Canvas

Phương thức Chức năng

abstract void paint (Graphic g) vẽđối tượng g lên Canvas final void repaint () yêu cấu vẽ Canvas

final void repaint (int x, int y, int width, int height)

yêu cấu vẽ một vùng của Canvas ((x,y) là toạ độ góc trái trên; width, height là kích thước vùng cần vẽ lại)

final void serviceRepaints() xử lý các yêu cầu vẽ còn treo

boolean isDoubleBuffered () kiểm tra thiết bị có hỗ trợ hai buffer không

Bảng 5.2 Lớp Canvas

Phương thức paint() được dùng để xử lý các sự kiện vẽ trong đối tượng Canvas. Nhưng khi cần yêu cầu thiết bị vẽ lại màn hình thì không gọi trực tiếp phương thức này mà gọi phương thức repaint(). Phương thức repaint() này sẽ gọi hàm paint() để

vẽ lại toàn bộ hay một phần màn hình.

Phương thức serviceRepaint() yêu cầu tất cả các yêu cầu vẽ trước đó phải được thực hiện ngay. Do đó, khi gọi phương thức này các tiến trình khác sẽ bị block cho đến khi tất cả các phương thức vẽđược thực hiện.

Các phương thức hỗ trợ giao tiếp với Application Manager:

Lớp Canvas: javax.microedition.lcdui.Canvas

Phương thức Chức năng

void showNotify () Được gọi trước khi application manager vẽ đối tượng canvas lên màn hình

void hideNotify () Được gọi sau khi application manager xoá

đối tượng canvas khỏi màn hình

Bảng 5.3 Giao tiếp với Application Manager

Java Mobile

protected void showNotify(){ }; protected void hideNotify(){ };

và được gọi bởi application manager trước khi vẽ và sau khi xoá đối tượng canvas lên màn hình. Do đó, không gọi trực tiếp các phương thức này trong chương trình. Mà chỉ nên viết code trong các phương thức này để cấp phát, khởi tạo các biến cũng như tạo lập hay hủy các tiến trình xử lý cho việc vẽ các đối tượng lên Canvas.

Một phần của tài liệu 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 (Trang 32 - 35)

Tải bản đầy đủ (PDF)

(59 trang)