Show various anchor points
/*-------------------------------------------------- * Text.java * * Show various anchor points * * Example from the book: Core J2ME Technology * Copyright John W. Muchow http://www.CoreJ2ME.com * You may use/modify for any non-commercial purpose *-------------------------------------------------*/ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Text extends MIDlet { private Display display; // The display private TextCanvas canvas; // Canvas to display text private AnchorPtList anchorPt; // List to query for anchor point private int anchorPoint = Graphics.BASELINE | Graphics.HCENTER; public Text() { display = Display.getDisplay(this); canvas = new TextCanvas(this); anchorPt = new AnchorPtList("Anchor point", List.IMPLICIT, this); } protected void startApp() { showCanvas(); } protected void pauseApp() { } protected void destroyApp( boolean unconditional ) { } public void showCanvas() { display.setCurrent(canvas); } public void showList() { display.setCurrent(anchorPt); } public int getAnchorPoint() { return anchorPoint; } public void setAnchorPoint(int anchorPoint) { this.anchorPoint = anchorPoint; } public void exitMIDlet() { destroyApp(true); notifyDestroyed(); } } /*-------------------------------------------------- * Class TextCanvas * * Draw text at specified anchor point *-------------------------------------------------*/ class TextCanvas extends Canvas implements CommandListener { private Command cmExit; // Exit midlet private Command cmGetAnchorPt; private Text midlet; public TextCanvas(Text midlet) { this.midlet = midlet; // Create commands & listen for events cmExit = new Command("Exit", Command.EXIT, 1); cmGetAnchorPt = new Command("Anchor", Command.SCREEN, 2); addCommand(cmExit); addCommand(cmGetAnchorPt); setCommandListener(this); } /*-------------------------------------------------- * Draw text *-------------------------------------------------*/ protected void paint(Graphics g) { int xcenter = getWidth() / 2, ycenter = getHeight() / 2; // Due to a bug in MIDP 1.0.3 we need to // force a clear of the display g.setColor(255, 255, 255); // White pen g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(0, 0, 0); // Black pen // Choose a font g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM)); // Draw a dot at the center of the display g.drawLine(xcenter, ycenter, xcenter, ycenter); // x and y are always at the center of the display // Move the text around x and y based on the anchor point g.drawString("go j2me!", xcenter, ycenter, midlet.getAnchorPoint()); } /*-------------------------------------------------- * Exit midlet or show anchor point selection list *-------------------------------------------------*/ public void commandAction(Command c, Displayable d) { if (c == cmExit) midlet.exitMIDlet(); else if (c == cmGetAnchorPt) { midlet.showList(); } } } /*-------------------------------------------------- * Class AnchorPtList * * List to query for an anchor point *-------------------------------------------------*/ class AnchorPtList extends List implements CommandListener { private Text midlet; public AnchorPtList(String title, int listType, Text midlet) { // Call list constructor super(title, listType); this.midlet = midlet; append("Top/Left", null); append("Top/HCenter", null); append("Top/Right", null); append("Baseline/Left", null); append("Baseline/HCenter", null); append("Baseline/Right", null); append("Bottom/Left", null); append("Bottom/HCenter", null); append("Bottom/Right", null); setCommandListener(this); } /*-------------------------------------------------- * Commands to set anchor point *-------------------------------------------------*/ public void commandAction(Command c, Displayable s) { switch (getSelectedIndex()) { case 0: midlet.setAnchorPoint(Graphics.TOP | Graphics.LEFT); break; case 1: midlet.setAnchorPoint(Graphics.TOP | Graphics.HCENTER); break; case 2: midlet.setAnchorPoint(Graphics.TOP | Graphics.RIGHT); break; case 3: midlet.setAnchorPoint(Graphics.BASELINE | Graphics.LEFT); break; case 4: midlet.setAnchorPoint(Graphics.BASELINE | Graphics.HCENTER); break; case 5: midlet.setAnchorPoint(Graphics.BASELINE | Graphics.RIGHT); break; case 6: midlet.setAnchorPoint(Graphics.BOTTOM | Graphics.LEFT); break; case 7: midlet.setAnchorPoint(Graphics.BOTTOM | Graphics.HCENTER); break; case 8: midlet.setAnchorPoint(Graphics.BOTTOM | Graphics.RIGHT); break; default: midlet.setAnchorPoint(Graphics.BASELINE | Graphics.HCENTER); } midlet.showCanvas(); } }