如果我有一個包含三個文本框的SST複合小部件,例如SSN,並且只有當焦點從小部件整體中丟失時才需要觸發更改事件,而不是從單個文本框中怎麼去做呢?如何將gwt複合小部件更改爲一個更改事件
5
A
回答
0
您需要實現您的複合Observer模式,並觸發新的通知,每次:
- 重點是在一個特定的文本框丟失,
- 焦點未轉移到任何的其他文本框。
1
如果您只想在整個窗口小部件失去焦點(而不是文本框)的情況下執行事件,那麼將窗口小部件的頂層設置爲FocusPanel,並將它提供給您的事件公開。
0
難道你不能使用計時器嗎?在文本框丟失焦點時,啓動一個5ms(或小的)定時器,當它打到時,將檢查所有3個TextBox實例的焦點。如果沒有人關注,那麼你手動通知你的觀察員。如果有人專注,就不要做任何事情。
把這個在您的複合類:
private Map<Widget, Boolean> m_hasFocus = new HashMap<Widget, Boolean>();
然後添加到您的文本框實例的每一個:
new FocusListener() {
public void onFocus(Widget sender) {
m_hasFocus.put(sender, Boolean.TRUE);
}
public void onLostFocus(Widget sender) {
m_hasFocus.put(sender, Boolean.FALSE);
new Timer() {
public void run() {
for (Boolean bool : m_hasFocus.values()) {
if (bool) { return; }
}
notifyObservers();
}
};
}
};
相關問題
- 1. 組合框更改事件
- 2. 如何通知小部件有關Qt中另一個小部件的更改?
- 3. 更改事件
- 4. 更改事件
- 5. 如何強制GWT小部件更新?
- 6. 更新小部件更改日期
- 7. 如何更改小部件上一個多對多的ModelForm
- 8. Excel VBA:將按鈕單擊事件更改爲單元格值更改事件
- 9. 如何更改GWT * .nocache.js文件
- 10. 將焦點從一個文本小部件更改爲另一個
- 11. 動態更新GWT複合窗口小部件的內容
- 12. GWT MVP模式 - 更改事件頁面的不同部分
- 13. TextBox更改事件
- 14. jquery更改事件
- 15. 如何將xampp localhost更改爲另一個文件夾(xampp文件夾外部)?
- 16. telerik radgrid問題:更改頁面大小更改事件時
- 17. 在jQuery中未更改組合框的更改事件
- 18. 如何捕捉GWT上的選項卡更改事件TabLayoutPanel
- 19. GWT:如何更改Menubar圖像,鼠標事件?
- 20. 將int更改爲小數後如何更改PdfSharp控制器
- 21. 如何將en.jscript文件更改爲farsi.jscript?
- 22. 更改同一部件的不同部分的事件
- 23. 如何將onclick事件綁定到更改事件的複選框INSTEAD?
- 24. WPF ViewBox縮放/大小更改事件
- 25. 目錄大小更改事件
- 26. 匯合atlassian更改事件監聽器
- 27. 事件更改值組合框JavaScript JSP
- 28. 檢查複選框的更改事件
- 29. Angular如何在模型值更改後觸發複選框的更改事件?
- 30. 如何通過jquery更改輸入域值更改事件?
不會因爲事件的順序沒有保證的工作焦點丟失,焦點在不同的盒子上獲得。 – retrobrain 2009-05-26 22:26:55
使用DeferredCommand可能會訣竅: http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/DeferredCommand.html – ivo 2009-05-26 22:54:50