Зажатие нескольких клавиш одновременно в обычном Canvas
- import javax.microedition.lcdui.Canvas;
- import javax.microedition.lcdui.Graphics;
- public class CanvasExample extends Canvas
- {
- private boolean right, left, up, down;
- private int x, y;
- public CanvasExample()
- {
- setFullScreenMode(true);
- x = getWidth()/2 - 25;
- y = getHeight()/2 - 25;
- }
- public void paint(Graphics g)
- {
- //белый фон
- g.setColor(255, 255, 255);
- g.fillRect(0, 0, getWidth(), getHeight());
- //квадратик, которым можно управлять, зажимая несколько клавиш
- g.setColor(0, 0, 0);
- g.fillRect(x, y, 50, 50);
- //управление этим квадратиком
- if(right) {x+=3;}
- if(left) {x-=3;}
- if(down) {y+=3;}
- if(up) {y-=3;}
- repaint();
- try
- {
- Thread.sleep(1L);
- }catch(InterruptedException ex)
- {}
- }
- private void handleKey(int gameKey, boolean flag)
- {
- switch(gameKey)
- {
- case RIGHT: right = flag; break;
- case LEFT: left = flag; break;
- case DOWN: down = flag; break;
- case UP: up = flag; break;
- }
- }
- public void keyPressed(int key)
- {
- handleKey(getGameAction(key), true);
- }
- public void keyReleased(int key)
- {
- handleKey(getGameAction(key), false);
- }
- }
Если использовать такой способ для обработки нажатия клавиш, то можно зажимать несколько клавиш одновременно 
