Java/J2ME/ChoiceGroup
ChoiceGroup With Images
/*--------------------------------------------------
* ChoiceGroupWithImages.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 ChoiceGroupWithImages extends MIDlet implements CommandListener
{
private Display display; // Reference to display object
private Form fmMain; // Main form
private Command cmExit; // Command to exit the MIDlet
private Command cmView; // View the choice selected
private ChoiceGroup cgPrefs; // Choice Group of preferences
public ChoiceGroupWithImages()
{
display = Display.getDisplay(this);
try
{
// Create array of image objects
Image images[] = {Image.createImage("/up.png"), Image.createImage("/down.png"),
Image.createImage("/help.png") };
// Create array of corresponding string objects
String options[] = {"Upload", "Download", "Help"};
// Create a choice group using arrays
cgPrefs = new ChoiceGroup("Select Option:", Choice.EXCLUSIVE, options, images);
}
catch (java.io.IOException e)
{
System.err.println("Unable to locate or read .png file");
}
cmExit = new Command("Exit", Command.EXIT, 1);
cmView = new Command("View", Command.SCREEN,2);
// Create Form, add components, listen for events
fmMain = new Form("");
fmMain.append(cgPrefs);
fmMain.addCommand(cmExit);
fmMain.addCommand(cmView);
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 == cmView)
{
boolean selected[] = new boolean[cgPrefs.size()];
// Fill array indicating whether each element is checked
cgPrefs.getSelectedFlags(selected);
// Print to console the status of each element
for (int i = 0; i < cgPrefs.size(); i++)
System.out.println(cgPrefs.getString(i) + (selected[i] ? ": selected" : ": not selected"));
}
else if (c == cmExit)
{
destroyApp(false);
notifyDestroyed();
}
}
}
Exclusive ChoiceGroup
/*--------------------------------------------------
* ExclusiveChoiceGroup.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 ExclusiveChoiceGroup extends MIDlet implements ItemStateListener, CommandListener
{
private Display display; // Reference to display object
private Form fmMain; // The main form
private Command cmExit; // A Command to exit the MIDlet
private Command cmView; // View the choice selected
private ChoiceGroup cgEmail; // Choice group
private int replyIndex; // Index of "reply" in choice group
private int choiceGroupIndex; // Index of choice group on form
public ExclusiveChoiceGroup()
{
display = Display.getDisplay(this);
// Create an exclusive (radio) choice group
cgEmail = new ChoiceGroup("Email Options", Choice.EXCLUSIVE);
// Append options, with no associated images
cgEmail.append("Read", null);
replyIndex = cgEmail.append("Reply", null);
cgEmail.append("Forward", null);
cgEmail.append("Delete", null);
// Set "reply" as the default/selected option
cgEmail.setSelectedIndex(replyIndex, true);
cmExit = new Command("Exit", Command.EXIT, 1);
cmView = new Command("View", Command.SCREEN,2);
// Create Form, add components, listen for events
fmMain = new Form("");
choiceGroupIndex = fmMain.append(cgEmail);
fmMain.addCommand(cmExit);
fmMain.addCommand(cmView);
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 == cmView)
{
// Build a string showing which option was selected
StringItem stiMessage = new StringItem("You selected: ", cgEmail.getString(cgEmail.getSelectedIndex()));
fmMain.append(stiMessage);
// Delete the choice group & view button
fmMain.delete(choiceGroupIndex);
fmMain.removeCommand(cmView);
}
else if (c == cmExit)
{
destroyApp(false);
notifyDestroyed();
}
}
public void itemStateChanged(Item item)
{
}
}
multiple ChoiceGroup
/*--------------------------------------------------
* MultipleChoiceGroup.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 MultipleChoiceGroup extends MIDlet implements ItemStateListener, CommandListener
{
private Display display; // Reference to display object
private Form fmMain; // The main form
private Command cmExit; // A Command to exit the MIDlet
private Command cmView; // View the choice selected
private int selectAllIndex; // Index of the "Select All" option
private ChoiceGroup cgPrefs; // Choice Group of preferences
private int choiceGroupIndex; // Index of choice group on form
public MultipleChoiceGroup()
{
display = Display.getDisplay(this);
// Create a multiple choice group
cgPrefs = new ChoiceGroup("Preferences", Choice.MULTIPLE);
// Append options, with no associated images
cgPrefs.append("Auto Indent", null);
cgPrefs.append("Replace Tabs", null);
cgPrefs.append("Wrap Text", null);
selectAllIndex = cgPrefs.append("Select All", null);
cmExit = new Command("Exit", Command.EXIT, 1);
cmView = new Command("View", Command.SCREEN,2);
// Create Form, add components, listen for events
fmMain = new Form("");
choiceGroupIndex = fmMain.append(cgPrefs);
fmMain.addCommand(cmExit);
fmMain.addCommand(cmView);
fmMain.setCommandListener(this);
fmMain.setItemStateListener(this);
}
public void startApp()
{
display.setCurrent(fmMain);
}
public void pauseApp()
{ }
public void destroyApp(boolean unconditional)
{ }
public void commandAction(Command c, Displayable s)
{
if (c == cmView)
{
boolean selected[] = new boolean[cgPrefs.size()];
// Fill array indicating whether each element is checked
cgPrefs.getSelectedFlags(selected);
for (int i = 0; i < cgPrefs.size(); i++)
System.out.println(cgPrefs.getString(i) + (selected[i] ? ": selected" : ": not selected"));
}
else if (c == cmExit)
{
destroyApp(false);
notifyDestroyed();
}
}
public void itemStateChanged(Item item)
{
if (item == cgPrefs)
{
// Is "Select all" option checked ?
if (cgPrefs.isSelected(selectAllIndex))
{
// Set all checkboxes to true
for (int i = 0; i < cgPrefs.size() - 1; i++)
cgPrefs.setSelectedIndex(i, true);
// Remove the check by "Select All"
cgPrefs.setSelectedIndex(selectAllIndex, false);
}
}
}
}