我意識到運行menuItem中顯示的命令的web應用程序。這些命令可能相互依賴,例如,如果命令C依賴於B,則B依賴於A來執行C,我們必須按照A-> B-> C的順序執行。總之,我想改進對我的反饋應用程序並在鼠標懸停在依賴於它們的命令上時自動選擇menuItem。 在此先感謝您的幫助。 注意:我使用GWT 2.3[GWT]是否可以選擇menuItem onMouseOver?
回答
不幸的是,gwt提供的方法是不可能的。 MenuItem
是UiObject
的直接子類,即繼承自同一個超類Widget
,但MenuItem不是Widget。問題是所有的事件函數都是在Widget中定義的,而不是在UiObject中定義的。
您可以嘗試在自己的項目中創建類com.google.gwt.user.client.ui.MenuItem
,從而「覆蓋」gwt類,讓它從Widget繼承,將原始MenuItem複製到並實現必要的接口。雖然我不會推薦。我幾乎爲提到它而感到羞愧。 更優雅的解決方案是在您自己的包中創建一個MyMenuItem類。將MenuItem的內容複製到它,但讓它從Widget繼承。然後,在您的.gwt.xml中使用重新綁定規則來將MenuItem替換爲MyMenuItem。只需記住在更改GWT版本時再次複製MenuItem。
或者,您可以重寫MenuItem並添加您自己的事件處理函數。你可以看看Widget
及其子類(TextField,Button ...)以瞭解如何完成該操作。開始的好地方是Widget#addDomHandler
。它並不像聽起來那麼複雜 - 骯髒的工作隱藏在Widget類也使用的GWT類中。它主要是複製/粘貼。缺點是如果你想使用新的GWT版本並且需要重寫,你的類可能不再工作了。
就我個人而言,我不會實現這樣的選擇作爲即時鼠標懸停效果。這對新用戶來說聽起來不錯,但作爲一個有經驗的用戶,我會很煩惱。通常情況下,菜單項被分組在屏幕上,所以當我想要一個特定的菜單項時,大部分時間我都必須對其他項進行鼠標懸停。導致閃爍的菜單項 - 煩人,特別是當我已經做了這麼多次,並知道命令的依賴關係。我可以推薦將它與一個計時器結合起來,以便在一定時間後選擇依賴關係,例如500毫秒。有經驗的用戶點擊的速度足夠快,不會被打擾,新用戶可以 - 如果需要的話 - 等一下,以獲得額外的幫助。
哦,如果你真的想這樣做 - mouseover是不夠的。你也必須傾聽焦點事件 - 許多用戶使用他們的鍵盤進行導航,而不是通過鼠標懸停捕捉,但引發焦點事件。
我只是有同樣的問題,這裏是一個解決這個惱人的問題。 當您查看MenuBar
類時,可以看到MenuBar中的每個MenuItem都處理了事件。 做的唯一一件事就是覆蓋菜單欄的public void onBrowserEvent(Event event)
方法,並找到至極項接收事件:
menu = new MenuBar(true) {
@Override
public void onBrowserEvent(Event event) {
MenuItem currentItem = null;
for (MenuItem item : itemList) {
if (DOM.isOrHasChild(item.getElement(), DOM.eventGetTarget(event))) {
//MenuItem found here
currentItem = item;
}
}
switch (DOM.eventGetType(event)) {
case Event.ONMOUSEOVER:
if (currentItem != null) {
// DO WHAT YOU GOTTA DO HERE
}
break;
}
super.onBrowserEvent(event);
}
};
您還可以創建自定義菜單項在其綁定的其他信息。
與前一個相比,這是一個更簡單的解決方案 - 只需在MenuBar
(Docs)上使用setAutoOpen(true)
方法即可。然後當用戶將鼠標移到它們上面時,所有的子菜單都會打開。
- 1. WPF OnMouseOver Style MenuItem
- 2. GWT MenuItem-List選定的值
- 3. 在GWT中可以選擇html標記
- 4. ActionBar MenuItem選擇器
- 5. 是否可以「選擇N次」?
- 6. 是否可以在JPQL中選擇EXISTS()?
- 7. 是否可以直接選擇EXISTS?
- 8. utf8decode是否可以選擇字符串?
- 9. 是否可以選擇運行餘額
- 10. 如何以編程方式選擇MenuItem
- 11. 是否可以跨越一個celltable GWT
- 12. 是否可以重用GWT UIBinder面板?
- 13. onmouseover顯示/隱藏div並且可以選擇div的文本
- 14. 是否可以選擇是否生成堆轉儲?
- 15. 是否可以結合onmouseover(evt)和if條件?
- 16. 是否可以在表中的整個列上使用onmouseover?
- 17. GWT複選框可選擇樹
- 18. 複選框以選擇網格(GWT)
- 19. 如何使複選框可以選擇全部在GWT中選擇?
- 20. 是否可以從表單中篩選選擇值的數組?
- 21. 是否可以將選擇選項更改綁定到函數?
- 22. 是否可以通過輸入屬性設置選擇選項?
- 23. 是否可以在角材選擇選項中輸入文字?
- 24. 是否可以測試選擇框中有多少個選項?
- 25. 是否可以使用MonoTouch.Dialog創建複選框選擇列表?
- 26. 是否可以在不可選擇的行上刪除'對勾'
- 27. 是否可以在blueprintjs中進行可編輯的選擇?
- 28. 是否可以重寫代碼以減少選擇的數量?
- 29. GWT動態MenuItem列表
- 30. GWT CellTree選擇