Java/J2ME/ChoiceGroup

Материал из Java эксперт
Перейти к: навигация, поиск

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);
      }
    }
  }
}