単純な「helloworld」アプリケーションを作成しようとしています。ボタンをクリックすると、「helloworld」という文字列が出力されます。フォームにボタンを追加するにはどうすればよいですか?
ボタンを作成する必要があります。ボタンをクリックすると、文字列を生成できます。j2meでcanvasを使用せずにボタンを追加するにはどうすればよいですか?
このためのAPIがありますが、本当に必要かどうかをよく考えてください。
APIは、lcduiアイテムオブジェクトの[外観モード]セクションで説明されています
StringItemクラスとImageItemクラスには、コンストラクターで設定できる外観モード属性があります。この属性には、PLAIN、HYPERLINK、またはBUTTONのいずれかの値を指定できます。PLAINの外観モードは、通常、テキストまたはグラフィック素材の非対話型表示に使用されます。外観モードの値は、アイテムの対話性に悪影響を及ぼしません。インタラクティブにするには、アイテムに1つ以上のコマンド(できればデフォルトのコマンドが割り当てられている)が必要であり、コマンド呼び出しの通知を受信するCommandListenerが必要です。
BUTTONモードのStringItemまたはImageItemを使用して、ボタンベースのユーザーインターフェイスを作成できます...
このセクションでは、ボタンの外観を使用すると問題が発生する可能性がある場合についても説明していることに注意してください。
...これは、使用するのに不便なアプリケーションに簡単につながる可能性があります。たとえば、トラバーサルベースのシステムでは、ユーザーはボタンにコマンドを呼び出す前に、ボタンに移動する必要があります。ボタンが長いフォームに分散している場合、ユーザーは、使用可能なすべてのコマンドを見つけるために、かなりの量のナビゲーションを実行する必要がある場合があります。さらに、フォームのもう一方の端にあるボタンからコマンドを呼び出すのは非常に面倒な場合があります。トラバーサルベースのシステムは、特定のアイテムにトラバースする必要なしに、どこからでも(メニューなどから)コマンドを呼び出す手段を提供することがよくあります。ボタンにコマンドを追加してそのボタンをフォームに配置する代わりに、そのコマンドをフォームに直接追加した方が、ユーザーにとってより適切で便利な場合がよくあります。
私が古い J2ME の本で見つけたクラス図から、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);
}
}
}