2010-10-07 32 views
1

我有四個文本框和一個ListBox放置在FlexTable中。我向服務器發出請求以獲取數據列表以填充ListBox。 當響應返回時,我填充ListBox。這是從我輸入的TextBox中竊取焦點。回到GWT焦點

我想要的是在填充ListBox之後,將焦點返回到之前的確切位置。

如何在GWT甚至在Java腳本中做到這一點?

+0

您是否希望這是一個通用的解決方案(您不知道哪個小部件之前關注過哪些小部件)或者您是否跟蹤小部件並知道哪一個應該關注焦點?後者顯然更容易,並歸結爲調用'setFocus'(假設該Widget實現['Focusable']](http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google /gwt/user/client/ui/Focusable.html)接口)。 – 2010-10-07 17:41:40

+0

我需要第一個,因爲我不知道在響應返回時在哪個TextBox用戶可能鍵入。 – Reddy 2010-10-08 04:31:11

回答

1

如果您需要通用解決方案,請創建實現BlurHandler或FocusHandler接口的類。將此類的對象分配給您的文本框。在onFocus/onBlur方法中,只需記住上次關注的小部件。 在填充ListBox之後,只需調用類似restoreFocus()的東西,它將調用setFocus(true)在該remebered對象上。

+0

不錯的主意,它會爲我工作(雖然我仍然需要檢查光標位置是否完全返回到文本框中的相同字符),因爲我只有2或3個文本框;但每個人如何處理這種情況(在AJAX應用程序中似乎不可避免)? – Reddy 2010-10-08 17:53:48

+0

這似乎是正確的做法,但不知何故,它不工作。 – Reddy 2010-10-12 04:22:50