我在尝试管理GWT对话框中的焦点时非常糟糕。我试图将一个非常友好的键盘界面放在一起,所以当我的对话框出现时(简单的是/否/取消事件),我需要让键盘焦点自动转到“是”按钮。然而,尽管我尽了最大的努力,但似乎无法在需要编程的地方争论焦点。我的代码现在看起来像这样:GWT专注于对话框中的按钮
public abstract class ConfirmDialog extends DialogBox {
final Button yesBtn, noBtn, cancelBtn;
public ConfirmDialog(String title, String prompt) {
super(false);
setTitle(title);
setText(title);
setGlassEnabled(true); // For great modal-ness!
DockLayoutPanel buttonPanel = new DockLayoutPanel(Unit.PX);
buttonPanel.setHeight("25px");
buttonPanel.addEast(cancelBtn, 75);
buttonPanel.addEast(noBtn, 60);
buttonPanel.addEast(yesBtn, 60);
FlowPanel dialogPanel = new FlowPanel();
dialogPanel.add(new HTML(prompt));
dialogPanel.add(buttonPanel);
setWidget(dialogPanel);
}
@Override
public void show() {
super.show();
center();
yesBtn.setFocus(true); // Why does this hate me???
}
}
省略:许多按钮单击事件处理gook,不影响初始显示。
无论如何,从代码中可以看到,其意图是一旦显示对话框,“yes”按钮就会获得焦点。我已经试过了,如代码示例中所示,我已将焦点放在DeferredCommand中,我尝试过钩住其他事件......但最好的焦点有点随机。我想它可能只是一个时间问题(也许我试图专注于按钮之前,它已被添加到DOM?),但如果是这样我不知道我应该看什么让我知道我什么时候可以有效地给按钮焦点。任何提示?
谢谢!
不幸的是,现在我已经转移到其他项目上,所以我怀疑我会有机会实现这个一会儿,但是谢谢你! – Toji 2011-05-03 13:52:18
尽管此解决方案可行,但它不会按预期工作。如果焦点位于'取消'或'否'按钮上,无论如何都会点击'是'按钮。 – 2014-04-04 21:20:58