Java/J2ME/Form
Содержание
Change Label Text
<source lang="java">
/*--------------------------------------------------
- ChangeLabelText.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 ChangeLabelText extends MIDlet implements CommandListener {
private Display display; // Reference to Display object private Form fmMain; // The main form private StringItem siUser; // The message private Command cmNext; // Next label and message private Command cmExit; // Command to exit the MIDlet public ChangeLabelText() { display = Display.getDisplay(this); // Create text message and commands siUser = new StringItem("UserId: ", "johnm"); cmNext = new Command("Next", Command.SCREEN, 1); cmExit = new Command("Exit", Command.EXIT, 1); // Create Form, add Command & StringItem, listen for events fmMain = new Form("Preferences"); fmMain.addCommand(cmExit); fmMain.addCommand(cmNext); fmMain.append(siUser); fmMain.setCommandListener(this); } // Called by application manager to start the MIDlet. public void startApp() { display.setCurrent(fmMain); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == cmNext) { // This method is inherited from the Item class siUser.setLabel("Account #: "); // Change the text siUser.setText("731"); // Remove the Next command fmMain.removeCommand(cmNext); } else if (c == cmExit) { destroyApp(false); notifyDestroyed(); } }
}
</source>
Create Form With Items
<source lang="java">
//jad file (please verify the jar size) /* MIDlet-Name: CreatingFormWithItems MIDlet-Version: 1.0 MIDlet-Vendor: MyCompany MIDlet-Jar-URL: CreatingFormWithItems.jar MIDlet-1: CreatingFormWithItems, , CreatingFormWithItems MicroEdition-Configuration: CLDC-1.0 MicroEdition-Profile: MIDP-1.0 MIDlet-JAR-SIZE: 100
- /
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.lcdui.StringItem; import javax.microedition.midlet.MIDlet; public class CreatingFormWithItems extends MIDlet implements CommandListener {
private Display display; private Form form; private Command exit = new Command("Exit", Command.SCREEN, 1); public CreatingFormWithItems() { display = Display.getDisplay(this); StringItem messages[] = new StringItem[] { new StringItem("Welcome, ", "glad you could come."), new StringItem("Hello, ", "Mary.") }; form = new Form("Display Form with Items", messages); form.addCommand(exit); form.setCommandListener(this); } public void startApp() { display.setCurrent(form); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command command, Displayable displayable) { if (command == exit) { destroyApp(true); notifyDestroyed(); } }
}
</source>
Display Stats
<source lang="java">
/*--------------------------------------------------
- DisplayStats.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 DisplayStats extends MIDlet implements CommandListener {
private Display display; // Reference to Display object private Form fmMain; // A Form private Alert alTest; // An Alert private Command cmExit; // A Command to exit the MIDlet public DisplayStats() { display = Display.getDisplay(this); cmExit = new Command("Exit", Command.SCREEN, 1); fmMain = new Form("Welcome"); fmMain.addCommand(cmExit); fmMain.setCommandListener(this); System.out.println("Display " + (display.isColor() ? "does" : "does not") + " support Color"); System.out.println("Number of colors: " + display.numColors()); } // Called by application manager to start the MIDlet. public void startApp() { alTest = new Alert("Alert", "This alert screen will be followed by the main form", null, null); alTest.setTimeout(Alert.FOREVER); display.setCurrent(alTest, fmMain); } // We are about to be placed in the Paused state public void pauseApp() { } // We are about to enter the Destroyed state public void destroyApp(boolean unconditional) { } // Check to see if the Exit command was selected public void commandAction(Command c, Displayable s) { if (c == cmExit) { destroyApp(true); notifyDestroyed(); } }
}
</source>
Form Example MIDlet
<source lang="java">
/* J2ME in a Nutshell By Kim Topley ISBN: 0-596-00253-X
- /
import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.StringItem; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; public class FormExampleMIDlet extends MIDlet {
// The MIDlet"s Display object protected Display display; // Flag indicating first call of startApp protected boolean started; protected void startApp() { if (!started) { display = Display.getDisplay(this); Form form = new Form("Item Layout"); form.append("Hello"); form.append("World"); form.append("\nLet"s start\na new line\n"); form.append("This is quite a long string that may not fit on one line"); form.append(new TextField("Name", "J. Doe", 32, TextField.ANY)); form.append("Address"); form.append(new TextField(null, null, 32, TextField.ANY)); display.setCurrent(form); started = true; } } protected void pauseApp() { } protected void destroyApp(boolean unconditional) { }
}
</source>
Form Juggle
<source lang="java">
/*--------------------------------------------------
- FormJuggle.java
- Show how a Form component handles inserting and
- setting (replacing) Items
- 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 FormJuggle extends MIDlet implements CommandListener {
private Display display; // Reference to display object private Form fmMain; // The main form private Command cmInsert; // Command to insert items private DateField dfDate; // Display date private TextField tfSize; // Product size private TextField tfQuantity; // Product quantity private int dateIndex; // Index of dfDate public FormJuggle() { display = Display.getDisplay(this); // Create the date and populate with current date dfDate = new DateField("", DateField.DATE); dfDate.setDate(new java.util.Date()); // Define two textfields and two commands tfSize = new TextField("Size", "Large", 5, TextField.ANY); tfQuantity = new TextField("Quantity:", "3", 2, TextField.NUMERIC); cmInsert = new Command("Insert", Command.SCREEN, 1); // Create the form, add insert command fmMain = new Form("Form Stuff"); fmMain.addCommand(cmInsert); // Append date to form & save index value where it was inserted dateIndex = fmMain.append(dfDate); // Capture events fmMain.setCommandListener(this); } // Called by application manager to start the MIDlet. public void startApp() { display.setCurrent(fmMain); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == cmInsert) { // One item on form, insert textfield prior to datefield if (fmMain.size() == 1) { fmMain.insert(dateIndex, tfQuantity); dateIndex += 1; // Date index has changed, update it } // If two items and last item is datefield, replace it else if (fmMain.size() == 2 && fmMain.get(1) == dfDate) fmMain.set(dateIndex, tfSize); } }
}
</source>
Form Scroll
<source lang="java">
/*--------------------------------------------------
- FormScroll.java
- Show how a Form component handles scrolling
- when multiple Items are on the display
- 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 FormScroll extends MIDlet implements CommandListener {
private Display display; // Reference to display object private Form frmMain; // The main form private Command cmdExit; // Command to exit private TextField txfSize; // Product size private ChoiceGroup chgEmail; // Choice group private Gauge gauVolume; // Volume public FormScroll() { display = Display.getDisplay(this); // Create TextField txfSize = new TextField("Size", "Large", 5, TextField.ANY); // Create an exclusive (radio) choice group, and append entries chgEmail = new ChoiceGroup("Email Options", Choice.EXCLUSIVE); chgEmail.append("Read", null); chgEmail.append("Forward", null); chgEmail.append("Delete", null); // Create the gauge gauVolume = new Gauge("Sound Level", true, 30, 4); cmdExit = new Command("Exit", Command.EXIT, 1); // Create the form frmMain = new Form("Form Stuff"); frmMain.append(txfSize); frmMain.append(chgEmail); frmMain.append(gauVolume); frmMain.addCommand(cmdExit); // Capture events frmMain.setCommandListener(this); } // Called by application manager to start the MIDlet. public void startApp() { display.setCurrent(frmMain); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == cmdExit) { destroyApp(false); notifyDestroyed(); } }
}
</source>
Read Display File
<source lang="java">
/*--------------------------------------------------
- ReadDisplayFile.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.*; import java.io.*; public class ReadDisplayFile extends MIDlet implements CommandListener {
private Display display; // Reference to Display object private Form fmMain; // Main form private Command cmHelp; // Command to show a help file private Command cmExit; // Command to exit the MIDlet private Alert alHelp; // Alert to display help file text public ReadDisplayFile() { display = Display.getDisplay(this); cmHelp = new Command("Help", Command.SCREEN, 1); cmExit = new Command("Exit", Command.EXIT, 1); fmMain = new Form("Read File"); fmMain.addCommand(cmExit); fmMain.addCommand(cmHelp); fmMain.setCommandListener(this); } public void startApp() { display.setCurrent(fmMain); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == cmHelp) { String str; // Access the resource and read its contents if ((str = readHelpText()) != null) { // Create an Alert to display the help text alHelp = new Alert("Help", str, null, null); alHelp.setTimeout(Alert.FOREVER); display.setCurrent(alHelp, fmMain); } } else if (c == cmExit) { destroyApp(false); notifyDestroyed(); } } private String readHelpText() { InputStream is = getClass().getResourceAsStream("help.txt"); try { StringBuffer sb = new StringBuffer(); int chr, i = 0; // Read until the end of the stream while ((chr = is.read()) != -1) sb.append((char) chr); return sb.toString(); } catch (Exception e) { System.out.println("Unable to create stream"); } return null; }
}
</source>
Verify Area Code
<source lang="java">
/*--------------------------------------------------
- VerifyAreaCode.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 VerifyAreaCode extends MIDlet implements CommandListener {
private Display display; // Reference to Display object private Form fmMain; // The main form private Command cmTest; // Next label and message private Command cmExit; // Command to exit the MIDlet private TextField tfPhone; // Phone number private String areaCodeTable [][] = { {"512", "912"}, // Old area code, new area code {"717", "917"} }; public VerifyAreaCode() { display = Display.getDisplay(this); // Create commands cmTest = new Command("Test", Command.SCREEN, 1); cmExit = new Command("Exit", Command.EXIT, 1); // Textfield for phone number tfPhone = new TextField("Phone:", "", 10, TextField.PHONENUMBER); // Create Form, add Commands & textfield, listen for events fmMain = new Form("Area Codes"); fmMain.addCommand(cmExit); fmMain.addCommand(cmTest); fmMain.append(tfPhone); fmMain.setCommandListener(this); } // Called by application manager to start the MIDlet. public void startApp() { display.setCurrent(fmMain); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } public void commandAction(Command c, Displayable s) { if (c == cmTest) { if (tfPhone.size() == 10) { char buffer[] = new char[10]; // Get phone number into byte array tfPhone.getChars(buffer); // Call method to check the area code table. // Create a new StringItem to display, // passing in "null" as the StringItem StringItem tmp = new StringItem(null, ("The area code " + (areaCodeLookup(buffer) ? "has" : "has not") + " been updated.")); // Place at the end of the form if (fmMain.size() == 1) // Only tfPhone on form fmMain.append(tmp); else // Replace previous StringItem fmMain.set(1, tmp); } } else if (c == cmExit) { destroyApp(false); notifyDestroyed(); } } /*-------------------------------------------------- * Compare the area code the user entered with the * area code table. If a match is found, replace * the user"s code with the new code from the table *-------------------------------------------------*/ private boolean areaCodeLookup(char [] buffer) { // Get the area code (only) from the users entry String str = new String(buffer, 0, 3); for (int x = 0; x < areaCodeTable.length; x++) { // If we find a match in the table if (str.equals(areaCodeTable[x][0])) { // Delete the area code tfPhone.delete(0, 3); // Insert the new area code tfPhone.insert(areaCodeTable[x][1].toCharArray(), 0, 3, 0); return true; } } return false; }
}
</source>