2008-09-11 12 views
5

Java MEのMIDletでyes/noダイアログを使用するための簡単なソリューションを探しています。私はこれをこのように使用したいと思っていますが、他の方法はおかしいです。Java MEのYes/Noダイアログ

if (YesNoDialog.ask("Are you sure?") == true) { 
    // yes was chosen 
} else { 
    // no was chosen 
} 

答えて

7

あなたはAlertが必要になります。

アラートは、先に進む前に、一定期間のためのユーザーを待ちにデータを表示する画面です次のDisplayableに移動します。アラートには、テキスト文字列とイメージを含めることができます。 Alertの意図された使用は、エラーやその他の例外的な状況についてユーザに知らせることです。 2 commands

(「はい」/「いいえ」あなたの場合):

アラートに存在する二つ以上のコマンドがある場合、それは自動的にモーダルアラートになっており、タイムアウト値は常にFOREVERです。アラートは、Commandが呼び出されるまで表示されます。

これらは、MIDP 1.0以降でサポートされている組み込みクラスです。また、あなたのコードスニペットは決して動作しません。そのようなAPIは、ユーザーが選択して応答するのを待っている呼び出しスレッドをブロックする必要があります。これは、コールバックと委任に基づいたMIDPのUIインタラクションモデルとは正反対です。 CommandListenerを実装して独自のクラスを用意し、非同期実行のコードを準備する必要があります。ここで

アラートに基づいて(!未テスト)の例のクラスである:

public class MyPrompter implements CommandListener { 

    private Alert yesNoAlert; 

    private Command softKey1; 
    private Command softKey2; 

    private boolean status; 

    public MyPrompter() { 
     yesNoAlert = new Alert("Attention"); 
     yesNoAlert.setString("Are you sure?"); 
     softKey1 = new Command("No", Command.BACK, 1); 
     softKey2 = new Command("Yes", Command.OK, 1); 
     yesNoAlert.addCommand(softKey1); 
     yesNoAlert.addCommand(softKey2); 
     yesNoAlert.setCommandListener(this); 
     status = false; 
    } 

    public Displayable getDisplayable() { 
     return yesNoAlert; 
    } 

    public boolean getStatus() { 
     return status; 
    } 

    public void commandAction(Command c, Displayable d) { 
     status = c.getCommandType() == Command.OK; 
     // maybe do other stuff here. remember this is asynchronous 
    } 

}; 

(再び、テストされていないと私の頭の上に)それを使用するには:

MyPrompter prompt = new MyPrompter(); 
Display.getDisplay(YOUR_MIDLET_INSTANCE).setCurrent(prompt.getDisplayable()); 

このコードはようになりますあなたのアプリに現在表示されているフォームのプロンプトが表示されますが、は投稿した例のようにスレッドをブロックしません。 commandAction呼び出しを続けて実行する必要があります。

+1

アラートはMIDP 1.0のaddCommandをサポートしていません。http://java.sun.com/javame/reference/apis/jsr037/javax/microedition/lcdui/Alert html – Casebash

-2

私は、Java MEにプログラムされているいけないが、それは Advanced Graphics and User Interface APIオプションパッケージのための参照だし、JOptionPane Class

int型でこれらのダイアログを作成するには、Java SE APIのように使われている中で私が見つけましたJOptionPane.showConfirmDialog(java.awt.ComponentをparentComponentに、java.lang.Objectの>メッセージ、タイトルのjava.lang.String、int型でoptionType)

戻る 可能性がありJOptionPane.YES_OPTION、JOptionPane.NO_OPTION、JOptionPane.CANCEL_OPTION ...

+0

残念ながら、これはオプションのパッケージであり、広くサポートされていません。 –

関連する問題