Sựkiện con trỏ

Một phần của tài liệu Giáo trình: Java và công nghệ J2ME pdf (Trang 43 - 45)

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() voidpointerPressed(int x, int y) voidpointerReleased(int x, int y) voidpointerDragged(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ự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);

}

}

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 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 voidpaint(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 Giáo trình: Java và công nghệ J2ME pdf (Trang 43 - 45)