我尝试制作一个简单的“hello world”应用程序,在单击按钮时,它会打印一个字符串“hello world”。如何在表单上添加按钮?
我需要创建一个按钮,当我单击它时可以生成一个字符串。如何在 j2me 中不使用画布添加按钮?
从我在一本旧的 J2ME 书中找到的类图(在线http://www.stardeveloper.com/articles/display.html?article=2002121101&page=2 )看来 J2ME 不做按钮。好吧,在旧手机上不需要它们。
只需创建一个“hello”命令并将其添加到菜单或表单中。然后系统会将其放在您设备上可用的任何按钮上。对于触摸屏设备,可能会将其变成可点击的东西。
这是代码
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class HelloWorld extends MIDlet implements CommandListener {
private static final String HELLO_WORLD = "Hello, World!!";
private Form form= new Form ("");
private Command exit= new Command("Exit", Command.EXIT, 0x01);
private Command ok= new Command("OK", Command.OK, 0x01);
private Command hello= new Command("HELLO", Command.SCREEN, 0x01);
private TextBox textBox= new TextBox("Hello World", HELLO_WORLD, HELLO_WORLD.length(), TextField.UNEDITABLE);
public HelloWorld() {
this.form.addCommand(exit);
this.form.addCommand(hello);
this.form.setCommandListener(this);
this.textBox.addCommand(ok);
this.textBox.addCommand(exit);
this.textBox.setCommandListener(this);
}
protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException { }
protected void pauseApp() { }
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(this.form);
}
public void commandAction(Command c, Displayable d) {
if (c == this.exit) {
this.notifyDestroyed();
}
if(c == this.ok) {
Display.getDisplay(this).setCurrent(this.form);
}
if(c == this.hello) {
Display.getDisplay(this).setCurrent(this.textBox);
}
}
}
对此有一个 API,但您最好三思而后行是否真的需要它。
StringItem 和 ImageItem 类具有可在其构造函数中设置的外观模式属性。此属性可以具有值 PLAIN、HYPERLINK 或 BUTTON 之一。PLAIN 的外观模式通常用于文本或图形材料的非交互式显示。外观模式值对项目的交互性没有任何副作用。为了具有交互性,该项目必须具有一个或多个命令(最好分配一个默认命令),并且它必须具有接收命令调用通知的 CommandListener...
BUTTON 模式下的StringItem 或 ImageItem 可用于创建基于按钮的用户界面...
请注意,本节还解释了使用按钮外观可能有问题的情况:
...这很容易导致应用程序使用不便。例如,在基于遍历的系统中,用户必须先导航到一个按钮,然后才能调用其上的任何命令。如果按钮分布在长表单中,用户可能需要执行大量导航才能发现所有可用命令。此外,从表单另一端的按钮调用命令可能非常麻烦。基于遍历的系统通常提供一种从任何地方(例如从菜单)调用命令的方法,而无需遍历特定项目。与其将命令添加到按钮并将该按钮放入表单中,不如将该命令直接添加到表单中对用户来说更合适和方便。