/*
Title: J2ME Games With MIDP2
Authors: Carol Hamer
Publisher: Apress
ISBN: 1590593820
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
* This is the main class of the hello world demo.
*
* @author Carol Hamer
*/
public class Hello extends MIDlet implements CommandListener {
/**
* The canvas is the region of the screen that has been allotted
* to the game.
*/
HelloCanvas myCanvas;
/**
* The Command objects appear as buttons in this example.
*/
private Command exitCommand = new Command("Exit", Command.EXIT, 99);
/**
* The Command objects appear as buttons in this example.
*/
private Command toggleCommand = new Command("Toggle Msg", Command.SCREEN, 1);
/**
* Initialize the canvas and the commands.
*/
public Hello() {
myCanvas = new HelloCanvas();
myCanvas.addCommand(exitCommand);
myCanvas.addCommand(toggleCommand);
// we set one command listener to listen to all
// of the commands on the canvas:
myCanvas.setCommandListener(this);
}
//----------------------------------------------------------------
// implementation of MIDlet
/**
* Start the application.
*/
public void startApp() throws MIDletStateChangeException {
// display my canvas on the screen:
Display.getDisplay(this).setCurrent(myCanvas);
myCanvas.repaint();
}
/**
* If the MIDlet was using resources, it should release
* them in this method.
*/
public void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
}
/**
* This method is called to notify the MIDlet to enter a paused
* state. The MIDlet should use this opportunity to release
* shared resources.
*/
public void pauseApp() {
}
//----------------------------------------------------------------
// implementation of CommandListener
/*
* Respond to a command issued on the Canvas.
* (either reset or exit).
*/
public void commandAction(Command c, Displayable s) {
if(c == toggleCommand) {
myCanvas.toggleHello();
} else if(c == exitCommand) {
try {
destroyApp(false);
notifyDestroyed();
} catch (MIDletStateChangeException ex) {
}
}
}
}
/**
* This class represents the region of the screen that has been allotted
* to the game.
*
* @author Carol Hamer
*/
class HelloCanvas extends Canvas {
//---------------------------------------------------------
// fields
/**
* whether or not the screen should currently display the
* "hello world" message.
*/
boolean mySayHello = true;
//-----------------------------------------------------
// initialization and game state changes
/**
* toggle the hello message.
*/
void toggleHello() {
mySayHello = !mySayHello;
repaint();
}
//-------------------------------------------------------
// graphics methods
/**
* clear the screen and display the hello world message if appropriate.
*/
public void paint(Graphics g) {
// get the dimensions of the screen:
int width = getWidth();
int height = getHeight();
// clear the screen (paint it white):
g.setColor(0xffffff);
// The first two args give the coordinates of the top
// left corner of the rectangle. (0,0) corresponds
// to the top left corner of the screen.
g.fillRect(0, 0, width, height);
// display the hello world message if appropriate:.
if(mySayHello) {
Font font = g.getFont();
int fontHeight = font.getHeight();
int fontWidth = font.stringWidth("Hello World!");
// set the text color to red:
g.setColor(255, 0, 0);
g.setFont(font);
// write the string in the center of the screen
g.drawString("Hello World!", (width - fontWidth)/2,
(height - fontHeight)/2,
g.TOP|g.LEFT);
}
}
}
|