Give an Action to Implicit List

Siang ini, aku nge-les-in 2 mahasiswa yang mau belajar J2ME (ternyata masih ada ya yang mau belajar J2ME, kirain udah kegusur sama android). Nah, materi hari ini aku kasih tentang List. Ternyata, di blog ini, aku belum pernah nulis tentang list IMPLICIT.

List IMPLICIT ini agak berbeda dari saudara-saudaranya yang lain (EXCLUSIVE dan MULTIPLE). Pada list dengan tipe IMPLICIT ini, kita bisa langsung memberikan aksi pada list tersebut tanpa perlu bantuan item COMMAND (semacam button di J2ME), dengan menggunakan SELECT_COMMAND. Berikut sintaks lengkapnya.


FormLogin.java

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;

/**
 *
 * @author dyahfajar
 */

public class FormLogin extends Form{
    TextField txtUser;
    TextField txtPasswd;
    Command cmdLogin;

    public FormLogin() {
        super("Halaman Login");
        txtUser = new TextField("Username", "", 20, TextField.ANY);
        txtPasswd = new TextField("Password", "", 20, TextField.PASSWORD);
        cmdLogin = new Command("Login", Command.OK, 0);       

        append(txtUser);
        append(txtPasswd);
        addCommand(cmdLogin);
    }
}


ListMultiple.java

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.List;

/**
 *
 * @author dyahfajar
 */

public class ListMultiple extends List{
    Command cmdBack;

    public ListMultiple() {
        super("Colour", MULTIPLE);
        append("Blue", null);
        append("Black", null);
        append("White TV", null);
        append("Green", null);      

        cmdBack = new Command("Back", Command.BACK, 0);

    }
}

ListExclusive.java


import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.List;

/**
 *
 * @author dyahfajar
 */

public class ListExclusive extends List{
    Command cmdBack;

    public ListExclusive() {

        super("Pasta", EXCLUSIVE);
        append("Spaghetti", null);
        append("Fettucini", null);
        append("Bolognase", null);      

        cmdBack = new Command("Back", Command.BACK, 0);
        addCommand(cmdBack);
    }
}


MainMenu.java

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.*;


/**
 * @author dyahfajar
 */

public class MainMenu extends MIDlet implements CommandListener{

    List menuList;
    Display dsp;

    // deklarasi untuk pemanggilan class lain

    FormLogin frmLogin;
    ListMultiple listMult;
    ListExclusive listExc;



    public MainMenu() {

        // instansiasi setiap object yang dideklarasikan

        dsp = Display.getDisplay(this);       

        frmLogin = new FormLogin();
        listExc = new ListExclusive();
        listMult = new ListMultiple();       

        menuList = new List("Menu Utama", List.IMPLICIT);

        // pendefinisian daftar menu yang akan muncul sebagai list
        menuList.append("List Multiple", null); // --> index 0
        menuList.append("List Exclusive", null); // --> index 1
        menuList.append("Exit", null); // --> index 2
       

        //melakukan pengaturan supaya form dan list bisa mendengarkan event
        // yang dilakukan oleh user

        frmLogin.setCommandListener(this);
        menuList.setCommandListener(this);
    }

    public void startApp() {
        dsp.setCurrent(frmLogin);
    }   

    public void pauseApp() {
    }   

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable d) {
        if (c == frmLogin.cmdLogin){

            //pengecekan sangat sederhana input username dan password
            if (frmLogin.txtUser.getString().equals("dyah") &&
                    frmLogin.txtPasswd.getString().equals("dyah")){
                dsp.setCurrent(menuList);

            }

        } else if (c == menuList.SELECT_COMMAND){

            //ngecek satu persatu list
            if (menuList.getSelectedIndex() == 2){
                notifyDestroyed();
                destroyApp(true);
            } else if (menuList.getSelectedIndex() == 0){
                dsp.setCurrent(listMult);
            } else if (menuList.getSelectedIndex() == 1){
                dsp.setCurrent(listExc);
            }
        }
    }
}

Komentar