メッセージボックスがすぐに返信するので、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 ではありません。