日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JavaFX 2中的PopupMenu

發布時間:2023/12/3 java 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaFX 2中的PopupMenu 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建彈出菜單

要在JavaFX中創建Popupmenu,可以使用ContextMenu類。

您向其中添加MenuItems,也可以使用SeparatorMenuItem創建可視分隔符。

在下面的示例中,我選擇子類ContextMenu并將MenuItems添加到其構造函數中。

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,并調用addAll添加MenuItems。
  • 第6行:使用MenuItem構建器創建MenuItem;
  • 第7行:傳入菜單項的文本。 變量ADD_PARTICLE等于“添加粒子”;
  • 第8行:調用圖形,該圖形接收createIcon返回的菜單項圖標: ImageView createIcon(URL iconURL){return ImageViewBuilder.create().image(new Image(iconURL.toString())).build();}
  • 第9行:onAction接收事件處理程序,該事件處理程序將在用戶單擊菜單項時調用;
  • 第15行:最后,通過在MenuItemBuilder類上執行build()創建MenuItem;
  • 第18行:創建分隔符,您可以在本文開頭的圖中看到該分隔符。 這是“添加原點”和“添加距離測量器”之間的虛線;
  • 其他代碼行僅重復相同的過程即可創建其余菜單項。



在JFXPanel中使用JavaFX彈出菜單
如果將JavaFX場景嵌入到Swing應用程序中,則必須手動執行一些額外的步驟,否則,彈出菜單上將沒有懸停動畫,并且當用戶單擊外部時不會自動將其關閉它的。 為此有一個針對JavaFX 3.0的修復程序– http://javafx-jira.kenai.com/browse/RT-14899 首先,您必須要求將焦點集中在javafx容器上,以便彈出窗口獲得懸停動畫,并且當您在應用程序窗口外單擊時,將其關閉。 就我而言,我在彈出菜單的構造函數上傳遞了對javafx swing容器的引用,然后我覆蓋了ContextMenu的show方法,以便在實際顯示彈出窗口之前請求將焦點放在swing容器上:

public void show(Node anchor, MouseEvent event) {wrapper.requestFocusInWindow();super.show(anchor, event.getScreenX(), event.getScreenY()); }

最后,當用戶在javafx場景內但在彈出窗口之外單擊時,您還必須通過調用hide()來關閉彈出窗口。
我幾乎忘了..感謝Martin Sladecek(Oracle JavaFX團隊)為我提供了一些建議。

參考:來自JCG合作伙伴的 JavaFX 2中的PopupMenu ? Pixel Duke博客上的Pedro Duque Vieira。


翻譯自: https://www.javacodegeeks.com/2012/02/popupmenu-in-javafx-2.html

總結

以上是生活随笔為你收集整理的JavaFX 2中的PopupMenu的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。