import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.CustomItem;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemCommandListener;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
public class Exec extends MIDlet implements CommandListener {
private Display display;
Form form = new Form("自定义组件");
GenderChooser gc = new GenderChooser("选择性别");
Command cmdOK = new Command("显示", Command.OK, 1);
TextField tf = new TextField("选择的性别是:", "", 20, TextField.ANY);
public Exec() {
display = Display.getDisplay(this);
}
public void startApp() {
form.append(gc);
form.append(tf);
form.addCommand(cmdOK);
form.setCommandListener(this);
display.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command arg0, Displayable arg1) {
tf.setString(gc.getString());
}
}
class GenderChooser extends CustomItem implements ItemCommandListener {
Image img1, img2;
Command selection = new Command("选择", Command.BACK, 1);
int image1Width, image1Height;
int image2Width, image2Height;
int checked = 0;
int location = 0;
public GenderChooser(String title) {
super(title);
try {
img1 = Image.createImage("/images/male.gif");
img2 = Image.createImage("/images/female.gif");
} catch (Exception e) {
System.out.println(e.getMessage());
}
setDefaultCommand(selection);
setItemCommandListener(this);
image1Width = img1.getWidth();
image1Height = img1.getHeight();
image2Width = img2.getWidth();
image2Height = img2.getHeight();
}
protected int getMinContentHeight() {
return (image1Height >= image2Height) ? (2 * image1Height + 10)
: (2 * image2Height + 10);
}
protected int getMinContentWidth() {
return (image1Width >= image2Width) ? (2 * image1Width + 10)
: (2 * image2Width + 10);
}
protected int getPrefContentHeight(int arg0) {
return getMinContentHeight();
}
protected int getPrefContentWidth(int arg0) {
return getMinContentWidth();
}
protected boolean traverse(int dir, int viewportWidth, int viewportHeight,
int[] visRect_inout) {
location = (location == 1) ? 2 : 1;
repaint();
return true;
}
protected void paint(Graphics g, int arg1, int arg2) {
int width = getMinContentWidth();
int height = getMinContentHeight();
g.setStrokeStyle(Graphics.DOTTED);
g.drawRect(0, 0, width - 1, height - 1);
g.setStrokeStyle(Graphics.SOLID);
g.drawArc(4, 4, 13, 13, 0, 360);
g.drawArc(4, height / 2 + 5, 13, 13, 0, 360);
if (checked == 1)
g.fillArc(4, 4, 13, 13, 0, 360);
else if (checked == 2)
g.fillArc(4, height / 2 + 5, 13, 13, 0, 360);
if (location == 1)
g.drawRect(2, 2, width - 5, height / 2 - 5);
else
g.drawRect(2, height / 2, width - 5, height / 2 - 5);
g.drawImage(img1, 22, 1, Graphics.TOP | Graphics.LEFT);
g.drawImage(img2, 22, height / 2, Graphics.TOP | Graphics.LEFT);
}
public void commandAction(Command arg0, Item arg1) {
checked = location;
repaint();
}
public String getString() {
if (checked == 1)
return "男";
else
return "女";
}
}
[此贴子已经被作者于2010-12-12 18:37:46编辑过]