簡體   English   中英

Java3d applet中的JPopupMenu不接收鼠標或鍵盤輸入

[英]JPopupMenu in Java3d applet does not receive mouse or keyboard input

我有一個Java應用程序,它使用Java3D和JPopupMenus填充JMenuItems。 當它作為常規應用程序運行時,一切正常--JPopupMenus和其他一切都按預期運行。 但是,當我從應用程序中創建一個applet時,完全彈出Canvas3D的JPopupMenu沒有按預期運行。 JPopupMenu的行為如下:

  1. 當鼠標移過菜單項時,菜單項不會突出顯示
  2. 箭頭鍵不能用於在菜單項中移動
  3. 單擊頂級JMenuItem完成操作並突出顯示該項,但它不像在常規應用程序中那樣處理JPopupMenu
  4. 單擊包含子菜單的頂級JMenuItem不會執行任何操作
  5. 單擊JPopupMenu外部並不像在常規應用程序中那樣處理JPopupMenu
  6. 顯示JPopupMenu后,在程序的swing部分頂部打開JPopupMenu可以使Canop3D上的JPopupMenu有規律和預期的行為,但第5點仍然適用

更多信息:

  • 使用JPopupMenu.show()顯示JPopupMenu與持有Canvas3D的JPanel相關
  • 我在創建任何JPopupMenus之前調用JPopupMenu.setDefaultLightWeightPopupEnabled(false),但這行似乎沒有什么區別。
  • 我認為這可能是一個焦點問題,但JPopupMenu.requestFocusInWindow()不起作用

所以我的問題是:導致應用程序和applet之間的行為不同的原因是什么,以及如何在applet函數中創建JPopupMenu,就像在應用程序中一樣?

您必須將輕量級JPopup更改為重量級,而不必發布其他內容而不發布您的SSCCE

我通過在JPopMenu上設置調用者並使其成為HeavyWeight來解決

final JPopupMenu popup = new JPopupMenu();
popup.setLightWeightPopupEnabled(false);
popup.setInvoker(myJFrame);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM