java me - 在J2ME中,是否有任何方法或属性类似于gotFocus的功能和lostFocus的控制。



在我的J2ME应用程序中,我想添加一个播放命令,当得到焦点在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();
        }
    }
}

我没有在应用程序初始化期间添加播放命令,因为我必须在音调(ChoiceGroup控件)获得焦点时添加播放命令,并在ChoiceGroup控件失去焦点时删除命令。

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

侦听器类型,用于接收在Item对象上调用的命令的通知。一个项目可以与Commands相关联。当这样的命令被调用时,应用程序通过调用settitemcommandlistener()在项目上设置的ItemCommandListener上调用commandAction()方法得到通知…

为选择组设置play命令,使用Item.addCommand(Command)方法:

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

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

最新更新