Это вопрос о том, как определить, какая кнопка была нажата в 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 not initialized»,
- и не сможет инициализироваться, потому что box должен быть окончательнымПоле
- должно быть окончательным, поскольку оно используется в классе прослушивателя anon.
Вместо этого мне нужно сравнивать кнопки, используя текст кнопки.Который не дружелюбен.Очень плохая практика.
@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?
Я ДОЛЖЕН сравнивать кнопки, а НЕ текст кнопок.