在J2ME中,是否存在类似于gotFocus&的功能的任何方法或属性。失去了对控制的关注

时间:2013-01-05 19:19:22

标签: java-me lcdui

在我的J2ME应用程序中,我想在关注名为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();
        }
    }
}

我没有在app初始化期间添加Play命令,因为当Tones(ChoiceGroup控件)获得焦点时我必须在表单上添加play命令,并在ChoiceGroup控件失去焦点时删除命令。

1 个答案:

答案 0 :(得分:1)

ChoiceGroup是一个Item对象,要使用您描述的命令,您需要 ItemCommandListener

  

一种侦听器类型,用于接收已在Item个对象上调用的命令的通知。项目可以与Commands关联。调用此类命令时,通过调用ItemCommandListener上的commandAction()方法来通知应用程序,该方法已在项目上设置,并调用setItemCommandListener() ...

要为选择组设置“播放”命令,请使用方法Item.addCommand(Command)

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

上面的代码可以在您的代码片段中调用disp.setCurrent(frm)之前编写。