1

私の J2ME アプリでは、choicegroup コントロールにフォーカスがあるときに play コマンドを追加したいと考えています。choicegroup コントロールにTonesフォーカスを失った後は、コマンドを削除する必要があります。

どうすればいいですか?

アップデート:

これが私のコードです:

 import javax.microedition.midlet.*;

 import javax.microedition.lcdui.*;

 public class Focusoncontrol extends MIDlet implements CommandListener
 {  
    Display disp;

    TextField Text1, Text2, Text3;
    ChoiceGroup Tones;
    Form frm;
    Command Save, Back, Play;

    public Focusoncontrol()
    {
        disp = Display.getDisplay(this);
        frm  = new Form("Focus demo");
        Text1 = new TextField("Text1", "", 20, 0);
        Text2 = new TextField("Text2", "", 20, 0);
        Text3 = new TextField("Text3", "", 20, 0);
        Tones = new ChoiceGroup("Tones", Choice.POPUP, new String[]{"Tone 1", "Tone 2"}, null);
        Save = new Command("Save", Command.SCREEN, 1);
        Back = new Command("Back", Command.EXIT, 3);
        Play = new Command("Play", Command.OK, 2);

        frm.append(Text1);
        frm.append(Text2);
        frm.append(Tones);
        frm.append(Text3);
        frm.addCommand(Save);
        frm.addCommand(Back);
        frm.setCommandListener(this);

        disp.setCurrent(frm);
    }

    public void startApp() 
    {
    }

    public void pauseApp() 
    {
    }

    public void destroyApp(boolean unconditional) 
    {
    }

    public void commandAction(Command c, Displayable d) 
    {
        if(c == Back)
        {
            destroyApp(true);
            notifyDestroyed();
        }
    }
}

Tones(ChoiceGroup コントロール) がフォーカスを取得したときにフォームに再生コマンドを追加し、ChoiceGroup コントロールがフォーカスを失ったときにコマンドを削除する必要があるため、アプリの初期化中に Play コマンドを追加しません。

4

1 に答える 1

1

ChoiceGroupはオブジェクトであり、説明したようなコマンドを使用するには、 ItemCommandListenerItemが必要 です:

Itemオブジェクトで呼び出されたコマンドの通知を受信するためのリスナー タイプ。アイテムをCommands関連付けることができます。このようなコマンドが呼び出されると、setItemCommandListener()への呼び出しで Item に設定されたcommandAction()メソッドが呼び出されることで、アプリケーションに通知されます ...ItemCommandListener

選択グループに「再生」コマンドを設定するには、次のメソッドを使用しますItem.addCommand(Command)

Tones.addCommand(Play); // add command to item
Tones.setItemCommandListener(/*... define  item cmd listener*/); // set listener

disp.setCurrent(frm)上記のコードは、コード スニペットで呼び出す直前などに記述できます。

于 2013-01-06T12:47:18.773 に答える