wiki:ohj2JavaMe
Last modified 7 years ago Last modified on 2010-12-26 20:50:11

Java ME (Mobile Edition) ja LWUIT

LWUIT on Java Mobile Edition päälle tehty Swingiä muistuttava käyttöliittymäkirjasto joka selkeyttää käyttöliittymän tekemistä Javalla mobiililaitteisiin.

1. Asentaminen

  1. hae ja asenna Java ME 3.0
  2. hae ja asenna uusin MJT - Mobile Tools for Java
    • katso sivulta Update Site osoite
    • Eclipsessä Help/Install? New Software ja Work with riville tuo osoite ja Enteriä ja ruksi kaikki osat
  3. Lisää laitteet:
    • Windows/Preferences/Java? ME/DeviceManagement/Import...
    • Specify Search Directory ja tähän se hakemisto johon asensit Java ME:n ja Finnish
  4. Katso että alla olevat temput on tehty ohjeesta.

  1. Hae LWUIT: http://java.sun.com/javame/technology/lwuit/ ja pura se johonkin (esim c:\devel)

2. Projektin tekeminen

  1. Päätä projektin aihe, esim. Autolaskuri
  2. Luo uusi projekti:
    • File/New/Other?.../Java ME/Midlet Project
    • nimeksi esim. !Autolaskuri
    • vaihda midletin ja julkaisijan nimi
    • lisää projektiin LWUIT.jar
  3. Muokkaa projektia
    • Project/Properties/Java? Build Path/Source?
    • Add folder... ja ruksi src ja res jos eivät ole jo ruksittuna
    • Vaihda Libraries Add JARs ja etsi lisäämäsi LWUIT.jar (esim: C:\devel\LWUIT_1_3\lib\LWUIT.jar)
    • Jos haluat Helpin, niin paina .jar:in vieressä olevaan +:aa ja JavaDociksi lisäämäsi lwuit:n doc-hakemisto
    • Vaihda Order and Export ja ruksi muuta paitsi J2ME... (TÄMÄ ON EHDOTTOMAN TÄRKEÄÄ, MUUTEN EMULAATTORI KAATUU ILMAN VAROITUKSIA)
    • OK
  4. Luo Midlet
  5. Aseta Midelet kuntoon
    • Klikkaa projektin alta Application Descriptor
    • muuttele tarvittaessa nimet ja versiot
  6. Muokkaa koodia haluamaksesi
  7. Aja emulaattorissa (hiiren oikea nappi ja Run/Run? Emulated Jave Midlet)
  8. Luo uusi JAR
    • Overview-välilehdeltä Create Package
    • nyt syntyy deployed -hakemisto ja sinne .jar ja .jad
    • joskus tuntuu että Overview-sivulla tehdyt muutokset eivät vaikuta ja tällöin deployed hakemiston tyhjentäminen saattaa auttaa
  9. Avaa resurssieditori (esim: c:\devel\LWUIT_1_3\util\ResourceEdit.exe )
    • luo uusi resurssitiedosto
    • tallenna res kansioon ja muista nimi
  10. Liitä jar:
    • MIDlet/Pick MIDlet ja hae deployed kansion alikansioon syntynyt .jar
  11. Muokkaa resursseja
    • lisää uusi teema Themes ja + ja anna sille nimi, jonka muistat
    • isonna editori niin suureksi että näet ohjelman
    • mene haluaamsi tilaan (Unselected, Selected, Pressed)
    • Paina Add ja valitse komponentti ja sen ominaisuus ja ominaisuudelle arvot
    • Uusia fontteja voit luoda Fonts kohdan alla ja sitten liittää komponenttiin
  12. Tallenna resurssitiedosto
  13. Sammuta resurssieditori
  14. Lisää koodiin esim:
    try {
        Resources r = Resources.open("/Nappi.res");
        UIManager.getInstance().setThemeProps(r.getTheme(r.getThemeResourceNames()[0]));
    } catch (java.io.IOException e) {
    }
    
  15. Refreshaa projektin hakemisto (jotta .res tiedosto tulee mukaan)
  16. Aja ohjelma uudella ulkoasulla.

3. Siirtäminen puhelimeen

  1. Siirrä syntynyt .jad ja .jar nettiin
  2. Klikkaa selaimessa .jad-tiedostoa
  3. Huom! Nokialaiset cacheavat aika kovasti ja voi olla niin, että ei lataa tuoreinta .jadia vaan muistelee vanhaa ja sitten jad ja jar eivät käy yhteen. Tyhjennä tällöin koko selaimen muisti. Voi myös kokeilla ladata pelkkää .jar-tiedostoa.

4. Malli "minimaalisesta" MIDletistä

package nappi;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

import com.sun.lwuit.Button;
import com.sun.lwuit.Command;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.Label;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.events.ActionListener;
import com.sun.lwuit.layouts.GridLayout;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;

/**
 * Malliohjelma jossa on yksi nappi
 * @author vesal
 *
 */
public class Nappi extends MIDlet implements ActionListener {

    private Button buttonNappi  = new Button("Paina tästä");            
    private Label labelTeksti = new Label("Hello");
    private Form f = null;    
    private Command exitCommand = new Command("Exit");
    
    /**
     * Alustetaan Midlet
     */
    public Nappi() {
        super();   
    }

    protected void destroyApp(boolean unconditional)
            throws MIDletStateChangeException {
    }

    protected void pauseApp() {
    }

    
    protected void startApp() throws MIDletStateChangeException {
        if ( f != null ) { f.show(); return; } // jottei luo kahdesti
        Display.init(this);
        f = new Form();
  
        try {
            Resources r = Resources.open("/Nappi.res");
            UIManager.getInstance().setThemeProps(r.getTheme(r.getThemeResourceNames()[0]));
        } catch (java.io.IOException e) {
        }
        
        buttonNappi.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                labelTeksti.setText("world!");
            }
        });
        
        f.setTitle("Hello World!");               
        f.setLayout(new GridLayout(2,1));
        f.addComponent(labelTeksti);
        f.addComponent(buttonNappi);
        f.addCommand(exitCommand);
        f.addCommandListener(this);
        f.show();
    }

    public void actionPerformed(ActionEvent evt) {
        if ( evt.getCommand() == exitCommand ) {
            notifyDestroyed();
        }
    }

}