2015-07-02 134 views
2

我試圖將子菜單添加到存在於系統任務欄中彈出菜單中的MenuItem。有什麼辦法可以做到這一點?我發現了一些有關子菜單的解決方案,但他們使用JMenuItem,而TrayIcon只接受PopupMenu,它只接受MenuItem s。如何將子菜單添加到MenuItem

試圖與MenuItem來實現這一目標:

Image

回答

5

一個JMenuItem不支持子菜單,您需要使用另一個JMenu(添加到您JPopupMenu)。見How to Use Menus更多細節

例如...

enter image description here

JPopupMenu popupMenu = new JPopupMenu(); 

JMenu deviceMenu = new JMenu("Add Device"); 
deviceMenu.add(new JMenuItem("Add More...")); 

popupMenu.add(deviceMenu); 
popupMenu.add(new JMenuItem("Delete Device")); 
popupMenu.add(new JMenuItem("Fire")); 
popupMenu.add(new JMenuItem("Fault")); 
popupMenu.add(new JMenuItem("Supress")); 

(當然,你仍然需要爲所有的這個插件功能)

和任務欄圖標只接受只接受MenuItems的PopupMenu。

還有一招,你要騙一點,看看How do I get a PopupMenu to show up when I left-click on a TrayIcon in Java?爲例

+0

嗨。我知道我已經接受了這個答案,但是我有一個問題。菜單出現,但是當我將鼠標懸停在菜單項上時,菜單項不會突出顯示,當點擊它時菜單也不會消失。你有什麼主意嗎? –

+0

從內存中,菜單對我來說突出顯示,但我必須對其進行測試。您可能需要強制手動關閉彈出菜單,因爲它沒有真正附加到任何東西... – MadProgrammer

+0

我已經在聽衆的末尾添加了'popup.showVisible(false)',但我不知道如何處理鼠標點擊它 –

相關問題