これは、MessageBox /ダイアログでどのボタンがクリックされたかを検出する方法に関する質問です。 GXT 2.1または2.2のみ。 GXT 3を使用して回答しないでください。GXT 2.2 - MessageBoxボタンの定数
理想的には、これは確認ダイアログを表示する方法です。しかし
final MessageBox box = MessageBox.confirm(
"Confirm kill avatar",
"Please remove " + getAvatar().getName(),
new Listener<MessageBoxEvent>()
{
@Override
public void handleEvent(MessageBoxEvent be)
{
Button clicked = be.getButtonClicked();
if (clicked == box.getDialog().getButtonById("yes"))
deleteAvatar();
else
Info.display("Action cancelled");
}
});
- 。ボックスが定義されていないため、
- ボックスにあり、box.getDialogは()、
- NPEだろうと、コンパイラは、ハスキーで「ボックス初期化されていません」という先取りし、
- とボックスが最終であることを持っているため初期化できませんそれはanon Listenerクラスで使用されているため最終的なものになります。
代わりに、ボタンのテキストを使用してボタンを比較する必要があります。これはi18nに優しいものではありません。非常に悪い習慣。
@Override
public void handleEvent(MessageBoxEvent be)
{
Button clicked = be.getButtonClicked();
if (clicked.getText().equals("Yes")))
deleteAvatar();
else
Info.display("Action cancelled");
}
GXT 2.2ではこれが推奨されますか?または、ボタンが押されていること、i18nに優しいことを検出する良い方法はありますか?
私は、ボタンのテキストではなく、ボタンを比較すべきです。