Nếu tôi có tiện ích con tổng hợp GWT với ba hộp văn bản như SSN và tôi chỉ cần kích hoạt sự kiện thay đổi khi tiêu điểm bị mất khỏi toàn bộ tiện ích, không phải từ các hộp văn bản riêng lẻ như thế nào để làm điều đó?Cách nhóm các tiện ích tổng hợp gwt thay đổi sự kiện dưới dạng sự kiện thay đổi
Trả lời
Bạn cần phải thực hiện các mẫu Observer vào hỗn hợp của bạn, và kích hoạt một mọi thông báo mới:
- trọng tâm bị mất trên một hộp văn bản cụ thể VÀ
- tiêu điểm không chuyển giao cho bất kỳ các hộp văn bản khác.
Nếu bạn muốn chỉ sự kiện khi toàn bộ tiện ích của bạn mất tiêu điểm (không phải hộp văn bản), thì hãy đặt cấp cao nhất của tiện ích là FocusPanel và hiển thị các sự kiện mà nó mang lại cho bạn.
Đó là điều đầu tiên tôi đã thử nhưng vì lý do nào đó không có sự kiện nào bị sa thải. FocusPanel giữ một HorizontalPanel có ba hộp văn bản. – retrobrain
Bạn không thể sử dụng bộ hẹn giờ? Trên tiêu điểm bị mất từ một hộp văn bản, bắt đầu một bộ đếm thời gian 5ms (hoặc một cái gì đó nhỏ) mà khi nó chạm, sẽ kiểm tra tiêu điểm trên tất cả 3 trường hợp TextBox. Nếu không có tập trung, sau đó bạn tự thông báo cho người quan sát của mình. Nếu người ta tập trung, không làm gì cả.
Đặt này trong lớp composite của bạn:
private Map<Widget, Boolean> m_hasFocus = new HashMap<Widget, Boolean>();
Và sau đó thêm video này vào mỗi một trong số các trường hợp TextBox của bạn:
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. jQuery - Sự kiện thay đổi sự kiện cháy
- 2. C# PrintDocument Sự kiện đã thay đổi
- 3. jquery sự kiện thay đổi gọi lại
- 4. Loại bỏ - Hủy sự kiện thay đổi?
- 5. Sự kiện thay đổi thuộc tính javascript
- 6. Sự kiện khi window.location.href thay đổi
- 7. Sự kiện thay đổi văn bản Backbone.js
- 8. Sự kiện cho thay đổi văn bản
- 9. mô phỏng sự kiện thay đổi jquery
- 10. Sự kiện thay đổi bảng tính VBA
- 11. Cách tự động thay đổi nguồn sự kiện?
- 12. Sự khác nhau giữa các sự kiện logic và sự kiện gốc trong GWT là gì?
- 13. Sự thay đổi tên lớp Sự kiện trong jQuery
- 14. tải các sự kiện toàn bộ sự kiện khi tháng thay đổi
- 15. Silverlight 3 thiếu ScrollViewer.ScrollSửa đổi sự kiện thay đổi?
- 16. Thay đổi JQuery trong các sự kiện tab
- 17. Sự kiện thay đổi lửa theo cách thủ công
- 18. Có cách nào để nghe sự kiện khi một cookie được thay đổi trong Tiện ích mở rộng của Firefox
- 19. WebDriver: Thay đổi sự kiện không kích hoạt
- 20. Có thể nghe sự kiện "thay đổi kiểu" không?
- 21. Hàng đợi sự kiện JSF ajax không hoạt động trên sự kiện hành động sau khi thay đổi sự kiện
- 22. TVirtualStringTree: Dữ liệu thay đổi giữa sự kiện OnMeasureItem và sự kiện OnGetText
- 23. sự kiện orientationchange bắn cuộn và thay đổi kích thước sự kiện
- 24. Thay đổi apache mpm từ sự kiện thành prefork
- 25. Thay đổi phần mở rộng của tệp khi người dùng thay đổi Lưu dưới dạng Lưu dưới dạng SaveFileDialog
- 26. Sự kiện đã thay đổi hướng sự kiện hoặc người nghe Android
- 27. Sự kiện GWT phía máy chủ; thay thế cho Vaadin
- 28. JQuery 'Thay đổi' xử lý sự kiện cho asp.net RadioButtonList không kích hoạt sự kiện
- 29. Làm cách nào để thêm trình xử lý sự kiện CSS AnimationEnd vào tiện ích GWT?
- 30. Có sự kiện "thay đổi DOM" nào không?
rằng sẽ không làm việc vì không có bảo đảm về trình tự các sự kiện mất tập trung và tập trung vào các hộp khác nhau. – retrobrain
Sử dụng DeferredCommand có thể thực hiện thủ thuật: http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/user/client/DeferredCommand.html – ivo
Làm rõ: 1. Bắt sự kiện tiêu điểm bị mất từ một trong các hộp văn bản; 2. Sử dụng DefferredCommand để kiểm tra xem trọng tâm không đạt được trên các hộp văn bản khác; 3. Nếu các hộp văn bản khác không lấy được tiêu điểm, thì tổng hợp của bạn sẽ phát ra thông báo "mất tiêu điểm" (hoặc bất kỳ thông báo nào) – ivo