Java/J2ME/Gauge

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

Gauge Interactive

   <source lang="java">

//jad file (please verify the jar size) /* MIDlet-Name: GaugeInteractive MIDlet-Version: 1.0 MIDlet-Vendor: MyCompany MIDlet-Jar-URL: GaugeInteractive.jar MIDlet-1: GaugeInteractive, , GaugeInteractive 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.lcdui.Gauge; import javax.microedition.midlet.MIDlet; public class GaugeInteractive extends MIDlet implements CommandListener {

 private Display display;
 private Form form = new Form("");
 private Command exit = new Command("Exit", Command.EXIT, 1);
 private Command vote = new Command("Vote", Command.SCREEN, 1);
 private Gauge gauge = new Gauge("Rate the movie: ", true, 5, 1);
 public GaugeInteractive() {
   display = Display.getDisplay(this);
   form.addCommand(exit);
   form.addCommand(vote);
   form.append(gauge);
   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(false);
     notifyDestroyed();
   } else if (command == vote) {
     String msg = String.valueOf(gauge.getValue());
     Alert alert = new Alert("Ranking", msg, null, null);
     alert.setTimeout(Alert.FOREVER);
     alert.setType(AlertType.INFO);
     display.setCurrent(alert);
   }
 }

}

      </source>
   
  
 
  



Gauge Non-Interactive

   <source lang="java">

//jad file (please verify the jar size) /*

* MIDlet-Name: GaugeNonInteractive MIDlet-Version: 1.0 MIDlet-Vendor: MyCompany
* MIDlet-Jar-URL: GaugeNonInteractive.jar MIDlet-1: GaugeNonInteractive, ,
* GaugeNonInteractive 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.lcdui.Gauge; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class GaugeNonInteractive extends MIDlet implements CommandListener {

 private Display display;
 private Form form = new Form("");
 private Command exit = new Command("Exit", Command.EXIT, 1);
 private Command start = new Command("Start", Command.SCREEN, 1);
 private Gauge gauge = new Gauge("Progress Tracking", false, 100, 0);
 private boolean isSafeToExit = true;
 public GaugeNonInteractive() {
   display = Display.getDisplay(this);
   form.append(gauge);
   form.addCommand(start);
   form.addCommand(exit);
   form.setCommandListener(this);
 }
 public void startApp() {
   display.setCurrent(form);
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) throws MIDletStateChangeException {
   if (!unconditional) {
     throw new MIDletStateChangeException();
   }
 }
 public void commandAction(Command command, Displayable displayable) {
   if (command == exit) {
     try {
       destroyApp(isSafeToExit);
       notifyDestroyed();
     } catch (MIDletStateChangeException Error) {
       Alert alert = new Alert("Busy", "Please try again.", null, AlertType.WARNING);
       alert.setTimeout(1500);
       display.setCurrent(alert, form);
     }
   } else if (command == start) {
     new Thread(new GaugeUpdater()).start();
   }
 }
 class GaugeUpdater implements Runnable {
   public void run() {
     isSafeToExit = false;
     try {
       while (gauge.getValue() < gauge.getMaxValue()) {
         Thread.sleep(500);
         gauge.setValue(gauge.getValue() + 1);
       }
       isSafeToExit = true;
       gauge.setLabel("Process Completed.");
     } catch (InterruptedException Error) {
       throw new RuntimeException(Error.getMessage());
     }
   }
 }

}

      </source>
   
  
 
  



Gauge Tracker

   <source lang="java">

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.Gauge; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemStateListener; import javax.microedition.lcdui.StringItem; import javax.microedition.midlet.MIDlet; public class GaugeTracker extends MIDlet implements ItemStateListener, CommandListener {

 private Gauge mGauge = new Gauge("GaugeTitle", true, 5, 3);
 private StringItem mStringItem = new StringItem(null, "[value]");
 public GaugeTracker() {
   itemStateChanged(mGauge);
 }
 public void itemStateChanged(Item item) {
   if (item == mGauge)
     mStringItem.setText("Value = " + mGauge.getValue());
 }
 public void commandAction(Command c, Displayable s) {
   if (c.getCommandType() == Command.EXIT)
     notifyDestroyed();
 }
 public void startApp() {
   Form form = new Form("GaugeTracker");
   form.addCommand(new Command("Exit", Command.EXIT, 0));
   form.setCommandListener(this);
   // Now add the selected items.
   form.append(mGauge);
   form.append(mStringItem);
   form.setItemStateListener(this);
   Display.getDisplay(this).setCurrent(form);
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }

}


      </source>
   
  
 
  



Interactive Gauge

   <source lang="java">

/*--------------------------------------------------

  • InteractiveGauge.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 InteractiveGauge extends MIDlet implements CommandListener {

 private Display display;   // Reference to display object 
 private Form fmMain;       // The main form
 private Command cmExit;    // Exit the form
 private Gauge gaVolume;    // Volume adjustment
 public InteractiveGauge()
 {
   display = Display.getDisplay(this);
   // Create the gauge and exit command
   gaVolume = new Gauge("Sound Level", true, 30, 4);
   cmExit = new Command("Exit", Command.EXIT, 1);
       
   // Create form, add commands, listen for events
   fmMain = new Form("");
   fmMain.addCommand(cmExit);
   fmMain.append(gaVolume);
   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 == cmExit)
   {
     destroyApp(false);
     notifyDestroyed();
   }
 }

}


      </source>
   
  
 
  



Non Interactive Gauge

   <source lang="java">

/*--------------------------------------------------

  • NonInteractiveGauge.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.util.Timer; import java.util.TimerTask; public class NonInteractiveGauge extends MIDlet implements CommandListener {

 private Display display;        // Reference to display object 
 private Form fmMain;            // The main form
 private Command cmExit;         // Exit the form
 private Command cmStop;         // Stop the download  
 private Gauge gaProgress;       // Progress indicator
 private Timer tm;               // The Timer
 private DownloadTimer tt;       // The task to run
 public NonInteractiveGauge()
 {
   display = Display.getDisplay(this);
   // Create the gauge, exit and stop command
   gaProgress = new Gauge("Download Progress", false, 20, 1);
   cmExit = new Command("Exit", Command.EXIT, 1);
   cmStop = new Command("Stop", Command.STOP, 1);    
       
   // Create the form, add gauge & stop command, listen for events
   fmMain = new Form("");
   fmMain.append(gaProgress);    
   fmMain.addCommand(cmStop);
   fmMain.setCommandListener(this);
 }
 // Called by application manager to start the MIDlet.
 public void startApp()
 {
   display.setCurrent(fmMain);
   // Create a timer that fires off every 1000 milliseconds    
   tm = new Timer();
   tt = new DownloadTimer();
   tm.scheduleAtFixedRate(tt, 0, 1000);          
 }
 public void pauseApp()
 { }
 
 public void destroyApp(boolean unconditional)
 { }
 public void commandAction(Command c, Displayable s)
 {
   if (c == cmExit)
   {
     destroyApp(false);
     notifyDestroyed();
   }
   else if (c == cmStop)
   {
     tm.cancel();
     fmMain.removeCommand(cmStop);    
     fmMain.addCommand(cmExit);    
     gaProgress.setLabel("Download Cancelled!");
   }      
 }
 
 /*--------------------------------------------------
 * Process the Timer Task
 *-------------------------------------------------*/  
 private class DownloadTimer extends TimerTask
 {
   public final void run()
   {
     // Is current value of gauge less than the max?
     if (gaProgress.getValue() < gaProgress.getMaxValue())
       gaProgress.setValue(gaProgress.getValue() + 1);        
     else
     {
       // Remove stop command and replace with Exit
       fmMain.removeCommand(cmStop);    
       fmMain.addCommand(cmExit);    
       
       // Change the gauge label 
       gaProgress.setLabel("Download Complete!");
       
       // Stop the timer
       cancel();      
     }
   }
 }

}

      </source>