▼MIDP2.0メモ▼
ダイアログを利用する


ダイアログを利用するプログラムを作る。

 


プログラム
DialogEx.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

//ダイアログを利用する(本体)
public class DialogEx extends MIDlet {
    static DialogEx     a;//本体
    static DialogCanvas c;//キャンバス

    //コンストラクタ
    public DialogEx() {
        a=this;
        c=new DialogCanvas();
        Display.getDisplay(this).setCurrent(c);
    }

    //アプリの開始
    public void startApp() {
    }

    //アプリの一時停止
    public void pauseApp() {
    }

    //アプリの終了
    public void destroyApp(boolean flag) {
    }
}


DialogCanvas.java
import javax.microedition.lcdui.*;

//ダイアログを利用する(キャンバス)
public class DialogCanvas extends Canvas {
    private String result="?";//結果

    //描画
    public void paint(Graphics g) {
        g.setColor(255,255,255);
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(0,0,0);
        g.drawString("1キー:メッセージダイアログ",0, 0,g.LEFT|g.TOP);
        g.drawString("2キー:YES/NOダイアログ",0,26,g.LEFT|g.TOP);
        g.drawString("結果:"+result,       0,52,g.LEFT|g.TOP);
    }

    //キープレスイベント
    public void keyPressed(int keyCode) {
        int r;
        if (keyCode==0) return;
        switch(keyCode) {
        case KEY_NUM1:
            Dialog.showDialog("情報",
                "メッセージダイアログです。[OK]を押すと閉じます。",
                DialogEx.a,this);
            result="OK";
            break;
        case KEY_NUM2: 
            if (Dialog.showYNDialog("選択",
                "YES/NOダイアログです。"+
                "[はい]または[いいえ]を選択してください。",
                DialogEx.a,this)==Dialog.BUTTON_YES) {
                result="YES";
            } else {
                result="NO";
            }
            break;
        }
        repaint();
    }
}


Dialog.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

//ダイアログ
public class Dialog extends Form 
    implements CommandListener {
    public static int BUTTON_CANCEL     =0x0002;
    public static int BUTTON_NO         =0x0008;
    public static int BUTTON_OK         =0x0001;
    public static int BUTTON_YES        =0x0004;
    public static int DIALOG_ERROR      =2;
    public static int DIALOG_INFO       =0;
    public static int DIALOG_WARNING    =1;
    public static int DIALOG_YESNO      =3;
    public static int DIALOG_YESNOCANCEL=4;
    
    //GUI
    private int         type;   //種別
    private int         result; //結果
    private MIDlet      midlet; //本体
    private Displayable disp;   //戻り先
    private StringItem  label;  //ラベル
    private Command[]   softKey;//ソフトキー

    //コンストラクタ
    public Dialog(int type,String title,MIDlet midlet,Displayable disp){
        super(title);
        
        //GUI
        this.type  =type;
        this.result=-999;
        this.midlet=midlet;
        this.disp  =disp;
        label=new StringItem("","");
        append(label);

        //ソフトキーの追加
        setCommandListener(this);
        softKey=new Command[2];
        if (type==DIALOG_INFO || type==DIALOG_WARNING || type==DIALOG_ERROR) {
            softKey[0]=new Command("OK",Command.SCREEN,0);
            addCommand(softKey[0]);
        } else if (type==DIALOG_YESNO || type==DIALOG_YESNOCANCEL) {
            softKey[0]=new Command("はい",  Command.SCREEN,0);
            softKey[1]=new Command("いいえ",Command.SCREEN,1);
            addCommand(softKey[0]);
            addCommand(softKey[1]);
        }
    }

    //テキストの指定
    public void setText(String text) {
        label.setText(text);
    }
    
    //表示
    public int show() {
        Display.getDisplay(midlet).setCurrent(this);
        result=-1;
        while (result<0) {
            try {
                Thread.sleep(200);
            } catch (Exception e) {
            }
        }
        return result;
    }

    //ソフトキーイベント
    public void commandAction(Command c,Displayable disp) {
        if (type==DIALOG_INFO || type==DIALOG_WARNING || type==DIALOG_ERROR) {
            if (c==softKey[0]) result=BUTTON_OK;
            Display.getDisplay(midlet).setCurrent(this.disp);
        } else if (type==DIALOG_YESNO || type==DIALOG_YESNOCANCEL) {
            if (c==softKey[0]) result=BUTTON_YES;
            if (c==softKey[1]) result=BUTTON_NO;
            Display.getDisplay(midlet).setCurrent(this.disp);
        }
    }
    
    //メッセージダイアログの表示
    public static void showDialog(String title,String msg,
        MIDlet midlet,Displayable disp){
        Dialog dlg=new Dialog(Dialog.DIALOG_INFO,title,midlet,disp);
        dlg.setText(msg);
        dlg.show();
    }

    //Yes/Noダイアログの表示
    public static int showYNDialog(String title,String msg,
        MIDlet midlet,Displayable disp){
        Dialog dlg=new Dialog(Dialog.DIALOG_YESNO,title,midlet,disp);
        dlg.setText(msg);
        return dlg.show();
    }
}


S!アプリ(P型)のJADファイル
DialogEx.jad
MIDlet-1: DialogEx, , DialogEx
MIDlet-Jar-Size: 3336
MIDlet-Jar-URL: DialogEx.jar
MIDlet-Name: DialogEx
MIDlet-Vendor: My Vendor
MIDlet-Version: 1.0
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-Application-Range: 0,0



−戻る−