GXT 2.2 - MessageBox按钮常量

时间:2012-03-28 14:56:38

标签: java gwt internationalization gxt

这是一个关于如何检测MessageBox / Dialog中单击了哪个按钮的问题。 仅限GXT 2.1或2.2。 请不要使用GXT 3回答。

理想情况下,这就是我可以进行确认对话的方式。

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,
  • 和编译器通过呱呱叫“box not initialised”来抢占先发制人,
  • 并且无法初始化,因为框必须是最终的,
  • 框必须是最终的,因为它在anon Listener类中使用。

相反,我必须使用按钮文本比较按钮。哪个不友好。非常糟糕的做法。

    @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友好?

我应该比较按钮而不是按钮的文字。

2 个答案:

答案 0 :(得分:4)

您可以使用:

if (Dialog.CANCEL.equals(be.getButtonClicked().getItemId())) {

    //do action 

}

答案 1 :(得分:0)

没关系。

我应该简单地从Dialog构建我自己的confirm / alert / etc,并提供我自己的提交/取消按钮和相应的听众。

Messagebox只是关于如何进行简单gxt对话框的沙箱/示例。