package j2me.study;
import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Choice; import javax.microedition.lcdui.ChoiceGroup; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Gauge; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException;
/** * @author Administrator * */ public class AlertDemo extends MIDlet {
private final static Command CMD_EXIT = new Command("Exit",Command.EXIT,1); private final static Command CMD_SHOW = new Command("Show",Command.SCREEN,1); private final static String[] typeStrings={ "Alarm","Confirmation","Error","Info","Warning" }; private final static String[] timeoutStrings={ "2 Seconds","4 Seconds","8 Seconds","Forever" }; private final static int SECOND =1000; private Display display; private boolean firstTime; private Form mainForm; public AlertDemo(){ firstTime = true; mainForm = new Form("Alert Options"); } /* (non-Javadoc) * @see javax.microedition.midlet.MIDlet#destroyApp(boolean) */ protected void destroyApp(boolean arg0) throws MIDletStateChangeException { // TODO Auto-generated method stub
}
/* (non-Javadoc) * @see javax.microedition.midlet.MIDlet#pauseApp() */ protected void pauseApp() { // TODO Auto-generated method stub
}
/* (non-Javadoc) * @see javax.microedition.midlet.MIDlet#startApp() */ protected void startApp() throws MIDletStateChangeException { // TODO Auto-generated method stub
display =Display.getDisplay(this); showOption(); } private void showOption(){ if(firstTime){ ChoiceGroup types = new ChoiceGroup("Type",ChoiceGroup.POPUP,typeStrings,null); mainForm.append(types); ChoiceGroup timeouts = new ChoiceGroup("Timeout",ChoiceGroup.POPUP,timeoutStrings,null); mainForm.append(timeouts); String[] optionStrings ={"Show Indicator"}; ChoiceGroup options= new ChoiceGroup("Options",Choice.MULTIPLE,optionStrings,null); mainForm.append(options); mainForm.addCommand(CMD_SHOW); mainForm.addCommand(CMD_EXIT); mainForm.setCommandListener(new AlerListener(types,timeouts,options)); firstTime =false; } display.setCurrent(mainForm); } private class AlerListener implements CommandListener{ AlertType[] alertTypes={ AlertType.ALARM,AlertType.CONFIRMATION,AlertType.ERROR, AlertType.INFO,AlertType.WARNING }; ChoiceGroup typesCG; int[] timeouts={2 * SECOND,4 * SECOND,8 * SECOND,Alert.FOREVER}; ChoiceGroup timeoutsCG; ChoiceGroup indicatorCG; public AlerListener(ChoiceGroup types,ChoiceGroup timeouts,ChoiceGroup indicator){ typesCG = types; timeoutsCG = timeouts; indicatorCG = indicator; } public void commandAction(Command c, Displayable d) { // TODO Auto-generated method stub
if(c == CMD_SHOW){ int typeIndex = typesCG.getSelectedIndex(); Alert alert = new Alert("Alert"); alert.setType(alertTypes[typeIndex]); int timeoutIndex = timeoutsCG.getSelectedIndex(); alert.setTimeout(timeouts[timeoutIndex]); alert.setString(typeStrings[typeIndex]+" Alert,Running "+timeoutStrings[timeoutIndex]); boolean [] SelectedFlags = new boolean[1]; indicatorCG.getSelectedFlags(SelectedFlags); if(SelectedFlags[0]){ Gauge indicator = createIndicator(timeouts[timeoutIndex]); alert.setIndicator(indicator); } display.setCurrent(alert); }else if(c == CMD_EXIT){ destroyApp(false); notifyDestroyed(); } } protected void destroyApp(boolean arg0) { } protected void pauseApp() { // TODO Auto-generated method stub
} private Gauge createIndicator(int maxValue){ if(maxValue == Alert.FOREVER){ return new Gauge(null,false,Gauge.INDEFINITE,Gauge.CONTINUOUS_RUNNING); } final int max = maxValue/SECOND; final Gauge indicator = new Gauge(null,false,max,0); new Thread(){ public void run(){ int value =0; while(value < max){ indicator.setValue(value); ++value; try{ Thread.sleep(1000); }catch(InterruptedException ie){ } } } }.start(); return indicator; }
} }
|