JavaFX 2中的PopupMenu
要在JavaFX中創(chuàng)建Popupmenu,可以使用ContextMenu類。
您向其中添加MenuItems,也可以使用SeparatorMenuItem創(chuàng)建可視分隔符。
在下面的示例中,我選擇子類ContextMenu并將MenuItems添加到其構(gòu)造函數(shù)中。
public class AnimationPopupMenu extends ContextMenu{ public AnimationPopupMenu() { (...)getItems().addAll(MenuItemBuilder.create().text(ADD_PARTICLE).graphic(createIcon(...)).onAction(new EventHandler() {@Overridepublic void handle(ActionEvent actionEvent) {// some code that gets called when the user clicks the menu item}}).build(),(...)SeparatorMenuItemBuilder.create().build(),MenuItemBuilder.create().text(ADD_DISTANCE_MEASURER).onAction(new EventHandler() {@Overridepublic void handle(ActionEvent actionEvent) {// Some code that will get called when the user clicks the menu item}}).graphic(createIcon(...)).build(), (...)); }- 第5行:我獲得了ContextMenu的子級Collection,并調(diào)用addAll添加MenuItems。
- 第6行:使用MenuItem構(gòu)建器創(chuàng)建MenuItem;
- 第7行:傳入菜單項(xiàng)的文本。 變量ADD_PARTICLE等于“添加粒子”;
- 第8行:調(diào)用圖形,該圖形接收createIcon返回的菜單項(xiàng)圖標(biāo): ImageView createIcon(URL iconURL){return ImageViewBuilder.create().image(new Image(iconURL.toString())).build();}
- 第9行:onAction接收事件處理程序,該事件處理程序?qū)⒃谟脩魡螕舨藛雾?xiàng)時(shí)調(diào)用;
- 第15行:最后,通過在MenuItemBuilder類上執(zhí)行build()創(chuàng)建MenuItem;
- 第18行:創(chuàng)建分隔符,您可以在本文開頭的圖中看到該分隔符。 這是“添加原點(diǎn)”和“添加距離測量器”之間的虛線;
- 其他代碼行僅重復(fù)相同的過程即可創(chuàng)建其余菜單項(xiàng)。
在JFXPanel中使用JavaFX彈出菜單
如果將JavaFX場景嵌入到Swing應(yīng)用程序中,則必須手動執(zhí)行一些額外的步驟,否則,彈出菜單上將沒有懸停動畫,并且當(dāng)用戶單擊外部時(shí)不會自動將其關(guān)閉它的。 為此有一個(gè)針對JavaFX 3.0的修復(fù)程序– http://javafx-jira.kenai.com/browse/RT-14899 首先,您必須要求將焦點(diǎn)集中在javafx容器上,以便彈出窗口獲得懸停動畫,并且當(dāng)您在應(yīng)用程序窗口外單擊時(shí),將其關(guān)閉。 就我而言,我在彈出菜單的構(gòu)造函數(shù)上傳遞了對javafx swing容器的引用,然后我覆蓋了ContextMenu的show方法,以便在實(shí)際顯示彈出窗口之前請求將焦點(diǎn)放在swing容器上:
最后,當(dāng)用戶在javafx場景內(nèi)但在彈出窗口之外單擊時(shí),您還必須通過調(diào)用hide()來關(guān)閉彈出窗口。
我?guī)缀跬?.感謝Martin Sladecek(Oracle JavaFX團(tuán)隊(duì))為我提供了一些建議。
參考:來自JCG合作伙伴的 JavaFX 2中的PopupMenu ? Pixel Duke博客上的Pedro Duque Vieira。
翻譯自: https://www.javacodegeeks.com/2012/02/popupmenu-in-javafx-2.html
總結(jié)
以上是生活随笔為你收集整理的JavaFX 2中的PopupMenu的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GWT –利弊
- 下一篇: 安卓7谷歌服务框架(安卓7谷歌)