2013-02-28 34 views
2

我在我的應用程序中有一個MenuBar,需要根據某些條件禁用它。 setEnabled(boolean)方法在GWT MenuBar上不可用,因此沒有直接的方法可以繼續執行此要求。如何禁用GWT中的MenuBar

例如:如果您查看NestedAnchor.setEnabled(boolean enabled),它將禁用該小部件上的事件並添加樣式。 我想在MenuBar上執行相同的行爲,其中未觸發點擊事件來顯示彈出窗口。

與jQuery也試圖添加disabled ATTR,仍然沒有成功

回答

1

這將用於此目的:menuBar.unsinkEvents(Event.MOUSEEVENTS | Event.ONCLICK | Event.FOCUSEVENTS | Event.KEYEVENTS);

+0

這將禁用在菜單欄上觸發的事件。好有趣,但風格怎麼樣?我認爲你可以用更簡單的方式實現你的目標....看看我提供的答案。 – Adarsha 2013-02-28 13:44:19

+0

雅式造型需要單獨處理:) – Satya 2013-02-28 14:28:41

1

你可以讓你的菜單欄隱形

menuBar.setVisible(false); 

當過要啓用菜單欄,然後​​menuBar.setVisible(真);

,如果你想禁用的風格,那麼在.css文件和設置樣式添加到styleDisable

menuBar.setStyleName(styleDisable); 

then check style

if(menuBar.getStyleName().equals("styleDisable")){ 

// write code here 
} 
+0

@Satya禁用菜單欄的彈出添加檢查條件類似上面,我thnk將WRK,並û試過嗎? – Parvathy 2013-02-28 11:56:38

+0

+ 1,當需要禁用時,第一個隱藏菜單欄非常糟糕,但第二個是更好的解決方案。 :) – 2013-03-01 05:58:18

+0

@TheSureshAtta我剛告訴bcz Satya可以選擇任何東西 – Parvathy 2013-03-01 06:01:48

0

您可以使用下面的API

DOM.setElementPropertyBoolean(menubar.getElement(), "disabled", !enabled); 
+0

這只是添加禁用的屬性到menuBar,即使jQuery的應用程序,但不禁用MenuBar的彈出菜單 – Satya 2013-02-28 11:53:35

+0

將菜單欄包裝在一個focusPanel,並在包裝​​上使用上述語句。它一定會奏效。 – 2013-03-01 04:32:20

2

菜單欄是菜單項的容器。容器不支持禁用屬性。所以yohu必須手動迭代菜單項列表來禁用它們中的每一個。下面的代碼片段的確,通過增加setEnable方法將菜單欄 -

MenuBar menuBar = new MenuBar() 
{ 
     public void setEnable(boolean enableFl) 
     { 
       for(MenuItem item : getItems()) 
       { 
        item.setEnable(enableFl); 
       } 
     } 
}; 
+1

這是禁用菜單欄的最簡單和最安全的方式。 – Adarsha 2013-02-28 13:31:52

+0

,但這仍然會觸發MenuBar上的單擊,以便用戶可以看到彈出屏幕......但我不想那樣做。當所有MenuItems被禁用時,用什麼顯示彈出窗口? – Satya 2013-02-28 14:28:17

+0

禁用菜單項觸發點擊事件??????????奇怪! – Adarsha 2013-02-28 14:37:42