【问题标题】:GXT 2.2 - MessageBox button constantsGXT 2.2 - MessageBox 按钮常量
【发布时间】:2012-03-28 14:56:38
【问题描述】:

这是一个关于如何检测在MessageBox/Dialog中点击了哪个按钮的问题。 仅限 GX​​T 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 尚未定义,box.getDialog() 将是 NPE,
  • 并且编译器通过发出“未初始化的盒子”来抢占它,
  • 并且无法初始化,因为框必须是最终的,
  • box 必须是 final 的,因为它在 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 友好?

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

【问题讨论】:

    标签: java gwt internationalization gxt


    【解决方案1】:

    你可以使用:

    if (Dialog.CANCEL.equals(be.getButtonClicked().getItemId())) {
    
        //do action 
    
    }
    

    【讨论】:

      【解决方案2】:

      没关系。

      我应该简单地从 Dialog 构建我自己的确认/警报/等,并为我自己的提交/取消按钮提供适当的侦听器。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-14
        • 1970-01-01
        • 1970-01-01
        • 2010-10-30
        • 2018-10-24
        • 1970-01-01
        • 1970-01-01
        • 2020-07-16
        相关资源
        最近更新 更多