【发布时间】:2012-03-28 14:56:38
【问题描述】:
这是一个关于如何检测在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 尚未定义,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