2007-01-23 J2me

Notatki z dnia 2007-01-23 dla j2me.

Uruchamianie

/mnt/data/j2me_sun_wtk2.2/bin/emulator -Xdescriptor:/home/gwpl/prog/javampr/bfmd/deployed/bfmd.jad

Dokumentacja

http://62.121.86.143/gwpl/l/MPR-Doc-323-s4093_current.pdf
http://62.121.86.143/gwpl/l/bfmd_doxygen/html/

Linki

http://java.sun.com/javame/reference/apis/jsr118/
http://java.sun.com/docs/books/tutorial/networking/sockets/index.html
http://java.sun.com/j2se/1.4.2/docs/api/

http://codelords.pjwstk.edu.pl/gwpl/pliki/obw23/java/

JDBC:
http://www.kitebird.com/articles/jdbc.html
http://www.developer.com/java/data/article.php/3417381

http://www.rzg.mpg.de/networking/tunnelling.html

Minimalna poprawna aplikacja J2ME

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
 
public class Mini extends MIDlet implements CommandListener{
    Display display;
    Form form = new Form("Forma1"); 
    public Mini() {    super();    }
    protected void startApp() throws MIDletStateChangeException {
        display = Display.getDisplay(this);
        display.setCurrent(form);
    }
    protected void pauseApp() {    }
    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {    }
    public void commandAction(Command c, Displayable d) {    }
 
}

GuiTests z Suna

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
 
public class GuiTests extends MIDlet 
implements CommandListener {
    Display display;
    List menu; 
    List choose;
    TextBox input;
    Ticker ticker = new Ticker( "Test GUI Components GW Test Cuttet Wersion (not to distribute)");
    final Alert soundAlert = new Alert("sound Alert");
    DateField date = new DateField("Today's date: ", DateField.DATE);
    Form form = new Form("Form for Stuff"); 
    Form today = new Form("Today's date");
    Gauge gauge = new Gauge("Progress Bar", false, 20, 9);
    TextField textfield = new TextField( "TextField Label", "abc", 50, 0);
 
    // command
    static final Command backCommand = new Command("Back", Command.BACK, 0);
    static final Command mainMenuCommand = new Command("Main", Command.SCREEN, 1);
    static final Command exitCommand = new Command("Exit", Command.STOP, 2);
    String currentMenu;
 
    public GuiTests() { }
    /**
     * Start the MIDlet by creating a list of
     * items and associating the
     * exit command with it.
     */
    public void startApp() throws 
    MIDletStateChangeException {
      display = Display.getDisplay(this);
      menu = new List(
      "Test Components", Choice.IMPLICIT);
      menu.append("Test TextBox", null);
      menu.append("Test List", null);
      menu.append("Test Alert", null);
      menu.append("Test Date", null);
      menu.append("Test Form", null);
      menu.addCommand(exitCommand);
      menu.setCommandListener(this);
      menu.setTicker(ticker);
      mainMenu();
      // form
      form.append(gauge);
      form.append(textfield);
      // today
      today.append(date);
    }
 
    public void pauseApp() {
      display = null; choose = null; menu = null; ticker = null; form = null; today = null; input = null; gauge = null; textfield = null;      
    }
 
    public void destroyApp(boolean unconditional) { notifyDestroyed(); }
 
    // main menu
    void mainMenu() { display.setCurrent(menu); currentMenu = "Main"; }
 
    /**
     * Test the TextBox component.
     */
    public void testTextBox() {
      input = new TextBox
      ("Enter Some Text:", "", 10, TextField.ANY);
      input.setTicker(new Ticker(
      "Testing TextBox"));
      input.addCommand(backCommand);
      input.setCommandListener(this);
      input.setString("");
      display.setCurrent(input);
      currentMenu = "input";
    }
 
    /**
     * Test the List component.
     */
    public void testList() {
        choose = new List("Choose Items",
        Choice.MULTIPLE);
        choose.setTicker(new Ticker(
        "Testing List"));
        choose.addCommand(backCommand);
        choose.setCommandListener(this);
        choose.append("Item 1", null);
        choose.append("Item 2", null);
        choose.append("Item 3", null);
        display.setCurrent(choose);
        currentMenu = "list"; 
   }
 
   /**
    * Test the Alert component.
    */
   public void testAlert() {
      soundAlert.setType(AlertType.ERROR);
      //soundAlert.setTimeout(20);
      soundAlert.setString("** ERROR **");
      display.setCurrent(soundAlert);
   }
 
   /**
    * Test the DateField component.
    */
   public void testDate() {
      java.util.Date now = new java.util.Date();
      date.setDate(now);
      today.addCommand(backCommand);
      today.setCommandListener(this);
      display.setCurrent(today);
      currentMenu = "date";
   }
 
   /**
    * Test the Form component.
    */
   public void testForm() {
      form.addCommand(backCommand);
      form.setCommandListener(this);
      display.setCurrent(form);
      currentMenu = "form";
   }
 
   /**
    * Handle events.
    */  
   public void commandAction(Command c,
   Displayable d) {
      String label = c.getLabel();
      if (label.equals("Exit")) {
         destroyApp(true);
      } else if (label.equals("Back")) {
          if(currentMenu.equals("list") 
          || currentMenu.equals("input") ||
               currentMenu.equals("date")
               || currentMenu.equals("form")) {
            // go back to menu
            mainMenu();
          } 
 
      } else {
         List down = (List)display.getCurrent();
         switch(down.getSelectedIndex()) {
           case 0: testTextBox();break;
           case 1: testList();break;
           case 2: testAlert();break;
           case 3: testDate();break;
           case 4: testForm();break;
         }
 
      }
  }
}
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License