在我的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控件失去焦点时删除命令。
答案 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)
之前编写。