我在嘗試管理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