Home   Single Page

メッセージボックス

メッセージボックスがすぐに返信するので、Messagebox.OKがいつも返信されます。このため、OK以外のボタンを表示させるのは意味がありません。例えば、以下の例ではifで指定した条件がTrueになることはありません。

if (Messagebox.show("Delete?", "Prompt", Messagebox.YES|Messagebox.NO,

Messagebox.QUESTION) == Messagebox.YES) {

this_never_executes();
}

むしろ、次のようにイベントリスナーを供給する必要があります。

Messagebox.show("Delete?", "Prompt", Messagebox.YES|Messagebox.NO,

Messagebox.QUESTION,

new EventListener() {

public void onEvent(Event evt) {

switch (((Integer)evt.getData()).intValue()) {

case Messagebox.YES: doYes(); break; //the Yes button is pressed

case Messagebox.NO: doNo(); break; //the No button is pressed

}

}}

);

ユーザーがボタンの1つをクリックしたとき、供給したイベントリスナーが起動されます。そして、データ(イベントの getData )を調べることでどのボタンが押されたか識別することができます。データは Messagebox.YES のように、ボタンの識別子の整数です。

それとも、イベントネームを調べることができます。

public void onEvent(Event evt) {

if ("onYes".equals(evt.getName())) {

doYes(); //the Yes button is pressed

} else if ("onNo".equals(evt.getName())) {

doNo(); //the No button is pressed

}

}

ノート: OK ボタンのイベントネームは onOK で、onOk ではありません。