Java/J2ME/Alert
Содержание
An example MIDlet with simple Alert UI component containing an Image.
<source lang="java">
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; /**
* An example MIDlet with simple "Alert" UI component containing an Image. */
public class AlertImage extends MIDlet {
private Display display; // The display for this MIDlet private Alert myAlert = null; public AlertImage() { } /** * Call showAlert */ public void startApp() { display = Display.getDisplay(this); TextBox t = new TextBox("Hello MIDlet", "Hello J2MECamp!", 256, 0); display.setCurrent(t); System.out.println( "Gonna create Alert.." ); createAlert(); }
/** * Puts up an Alert with an Image */ private void createAlert() { myAlert = new Alert("MIDlet Alert"); String[] alertString = { " Alert String" }; myAlert.setTimeout(Alert.FOREVER); // Add an image to Alert if (display.numColors() > 2) { String icon = (display.isColor()) ?"/JavaPowered-8.png" : "/JavaPowered-2.png"; try { Image image = Image.createImage( icon ); if (image != null) { myAlert.setImage(image); System.out.println( "Image created and added to alert.. " ); } else { System.out.println( "No Image created... " ); } // Add string to Alert for ( int i = 0; i < alertString.length; i++ ) { myAlert.setString( alertString[i] ); } if ( myAlert != null ) { display.setCurrent( myAlert ); } } catch( Exception e ) { System.out.println( "Exception in CreateImage() " ); } } } /** * Pause is a no-op since there are no background activities or * record stores that need to be closed. */ public void pauseApp() { } /** * Destroy must cleanup everything not handled by the garbage collector. * In this case there is nothing to cleanup. */ public void destroyApp(boolean unconditional) { }
}
</source>
High-Level Display Screens : Alert
<source lang="java">
//jad file (please verify the jar size) /* MIDlet-Name: DisplayAlert MIDlet-Version: 1.0 MIDlet-Vendor: MyCompany MIDlet-Jar-URL: DisplayAlert.jar MIDlet-1: DisplayAlert, , DisplayAlert MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-1.0 MIDlet-JAR-SIZE: 100
- /
import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class DisplayAlert extends MIDlet implements CommandListener {
private Display display; private Alert alert; private Form form = new Form("Throw Exception"); private Command exit = new Command("Exit", Command.SCREEN, 1); private boolean exitFlag = false; public DisplayAlert() { display = Display.getDisplay(this); form.addCommand(exit); form.setCommandListener(this); } public void startApp() { display.setCurrent(form); } public void pauseApp() { } public void destroyApp(boolean unconditional) throws MIDletStateChangeException { if (unconditional == false) { throw new MIDletStateChangeException(); } } public void commandAction(Command command, Displayable displayable) { if (command == exit) { try { if (exitFlag == false) { alert = new Alert("Busy", "Please try again.", null, AlertType.WARNING); alert.setTimeout(Alert.FOREVER); display.setCurrent(alert, form); destroyApp(false); } else { destroyApp(true); notifyDestroyed(); } } catch (Exception exception) { exitFlag = true; } } }
}
</source>
Modal Alert
<source lang="java">
/*--------------------------------------------------
- ModalAlert.java
- Example from the book: Core J2ME Technology
- Copyright John W. Muchow http://www.CoreJ2ME.ru
- You may use/modify for any non-commercial purpose
- -------------------------------------------------*/
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ModalAlert extends MIDlet implements CommandListener {
private Display display; // Reference to Display object private Form fmMain; // Main form private Alert alTest; // Alert to show text and image private Command cmExit; // Command to exit the MIDlet public ModalAlert() { display = Display.getDisplay(this); cmExit = new Command("Exit", Command.SCREEN, 1); fmMain = new Form("Welcome"); fmMain.append("Text string inside the Form"); fmMain.addCommand(cmExit); fmMain.setCommandListener(this); } public void startApp() { showAlert(); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void showAlert() { try { // Create an image Image im = Image.createImage("/coffee.png"); // Create Alert, add text and image, associate a sound alTest = new Alert("New Alert", "Time for more Java", im, AlertType.INFO); // Set Alert to type Modal alTest.setTimeout(Alert.FOREVER); } catch(Exception e) { System.out.println("Unable to read png image."); } // Display the Alert. Once dismissed, display the form display.setCurrent(alTest, fmMain); } public void commandAction(Command c, Displayable s) { if (c == cmExit) { destroyApp(true); notifyDestroyed(); } }
}
</source>
Multi Alert
<source lang="java">
/* License
* * Copyright 1994-2004 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistribution of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * Redistribution in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * You acknowledge that this software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. */
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.*;
public class MultiAlert extends MIDlet {
Display display; Command exitCommand = new Command( "Exit", Command.EXIT, 1 ); Timer timer1 = new Timer(); Timer timer2 = new Timer(); Timer timer3 = new Timer(); MainForm form = new MainForm(); AlertRouter router; public MultiAlert() { display = Display.getDisplay( this ); router = new AlertRouter( display ); timer1.schedule( new AlertTrigger( "Alert 1", "This is alert #1" ), 5000, 10000 ); timer2.schedule( new AlertTrigger( "Alert 2", "This is alert #2" ), 5000, 7000 ); timer3.schedule( new AlertTrigger( "Alert 3", "This is alert #3" ), 5000, 9000 ); } protected void destroyApp( boolean unconditional ) { timer1.cancel(); timer2.cancel(); timer3.cancel(); } protected void startApp() { display.setCurrent( form ); } protected void pauseApp() { } public void exit(){ destroyApp( true ); notifyDestroyed(); } class AlertTrigger extends TimerTask { public AlertTrigger( String title, String message ) { this.title = title; this.message = message; } public void run(){ Alert alert = new Alert( title, message, null, null ); alert.setTimeout( Alert.FOREVER ); router.showAlert( alert ); } private String title; private String message; } class MainForm extends Form implements CommandListener { public MainForm(){ super( "MultiAlert Demo" ); addCommand( exitCommand ); setCommandListener( this ); } public void commandAction( Command c, Displayable d ){ exit(); } }
}
</source>
Two Alerts
<source lang="java">
import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.rumand; import javax.microedition.lcdui.rumandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.TextBox; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; public class TwoAlerts extends MIDlet implements CommandListener {
private Display mDisplay; private TextBox mTextBox; private Alert mTimedAlert; private Alert mModalAlert; private Command aboutCommand, goCommand, exitCommand; public TwoAlerts() { aboutCommand = new Command("About", Command.SCREEN, 1); goCommand = new Command("Go", Command.SCREEN, 1); exitCommand = new Command("Exit", Command.EXIT, 2); mTextBox = new TextBox("TwoAlerts", "", 32, TextField.ANY); mTextBox.addCommand(aboutCommand); mTextBox.addCommand(goCommand); mTextBox.addCommand(exitCommand); mTextBox.setCommandListener(this); mTimedAlert = new Alert("Network error", "A network error occurred. Please try again.", null, AlertType.INFO); mModalAlert = new Alert("About TwoAlerts", "TwoAlerts is a simple MIDlet that demonstrates the use of Alerts.", null, AlertType.INFO); mModalAlert.setTimeout(Alert.FOREVER); } public void startApp() { mDisplay = Display.getDisplay(this); mDisplay.setCurrent(mTextBox); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == aboutCommand) mDisplay.setCurrent(mModalAlert); else if (c == goCommand) mDisplay.setCurrent(mTimedAlert, mTextBox); else if (c == exitCommand) notifyDestroyed(); }
}
</source>