Sựkiện con trỏ

Một phần của tài liệu Lập trình với J2ME (Trang 32 - 34)

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ố phương thức được cung cấp nhằm hỗ trợ cho việc xử lý sự kiện con trỏ:

boolean hasPointerEvents()

boolean hasPointerMotionEvents() void pointerPressed(int x, int y) void pointerReleased(int x, int y) void pointerDragged(int x, int y)

Các phương thức 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ư phương thức 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ực hiệ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); }

display.setCurrent( canvas ); }

protected void pauseApp() {}

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 ScratchPad midlet;

private boolean clearDisplay = true;

public ScratchPadCanvas(ScratchPad midlet) { this.midlet = midlet;

// Create exit command and listen for events

cmExit = new Command("Exit", Command.EXIT, 1);

cmClear = new Command("Clear", Command.SCREEN, 1); addCommand(cmExit);

addCommand(cmClear); setCommandListener(this); }

protected void paint(Graphics g) {

// Clear the background (to white) if (clearDisplay) {

g.setColor(255, 255, 255);

g.fillRect(0, 0, getWidth(), getHeight()); clearDisplay = false;

startx = currentx = starty = currenty = 0; return;

}

// Draw with black pen g.setColor(0, 0, 0);

// Draw line

g.drawLine(startx, starty, currentx, currenty); // New starting point is the current position startx = currentx;

starty = currenty; }

public void commandAction(Command c, Displayable d) { if (c == cmExit) midlet.exitMIDlet(); else if (c == cmClear) { clearDisplay = true; repaint(); } }

protected void pointerPressed(int x, int y) { startx = x;

starty = y; }

protected void pointerDragged(int x, int y) { currentx = x; currenty = y; repaint(); } } 3.3 Lớp Graphics

Chúng ta sử dụng đối tượng Graphics để vẽ lên một Canvas.

Một phần của tài liệu Lập trình với J2ME (Trang 32 - 34)

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

(48 trang)