我該如何修改GWT菜單 - 灰掉某些條目,根據我的應用程序狀態在其他條目旁邊勾選複選標記?動態GWT菜單
我的應用程序在頂部有一個菜單欄 - 文件,編輯,視圖,插入,格式等。我有許多段落,每個段落可以有不同的格式。當用戶點擊格式時,我想要格式菜單在menuItem旁邊顯示一個對應於當前所選段落格式的複選標記。如果某些格式對於當前選定的段落不合適,我想將這些菜單項灰掉。
主要問題是何時進行更新:(a)單擊格式菜單按鈕時,或(b)每當我的用戶選擇一個新段落時?
我覺得選項(一)更吸引人。但是,我怎麼能檢測到這一點? MenuItem沒有任何添加事件偵聽器的功能。它可能是我需要的一個mouseClick,但它可能是一個mouseOver:如果用戶單擊插入菜單項,插入菜單將出現,但如果鼠標移動到格式上,則會出現格式菜單。
選項(b)聽起來更簡單,但會浪費更多的處理器時間。
對於我的contextMenu(右鍵單擊該段落),它更容易,因爲菜單隻有在發生右擊時才構造。
我已經使用平方根符號(&#8730)打勾。有誰知道更好的方法?我需要使用HTML並使用「 簡單格式」作爲我的菜單項嗎?
最後,有沒有辦法禁用(變灰)菜單項,以便它不能被選中?
感謝普羅米修斯。我看不到如何使用Text以外的其他任何東西(可能是HTML)製作MenuItem。例如,我想用複選框和標籤製作一個Panel,但GWT似乎沒有提供。另外,我可以在MenuItem上看到任何setEnable()選項。我不是在正確的地方看嗎? – John 2010-01-25 21:17:26
啊,我在想,你可以製作自己的菜單,而不是使用MenuItem/MenuBar。如果您想使用MenuBar,我會使用html創建MenuItem(包括使用標記的複選框),並可能更改字體顏色以指示是否未啓用項目。您可以擴展MenuItem/MenuBar類來添加一些簡單的方法,以便您更改是否選擇或啓用對象。作爲最後的手段,您可能需要查看Smart GWT庫(http://www.smartclient.com/smartgwt/showcase/#main),因爲它具有許多您正在尋找的功能。 – 2010-01-25 23:27:23