在我的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)
之前。