Java3d applet中的JPopupMenu不接收鼠标或键盘输入

mah*_*.cs 4 java swing java-3d jpopupmenu

我有一个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,就像在应用程序中一样?

mKo*_*bel 5

您必须将轻量级JPopup更改为重量级,而不必发布其他内容而不发布您的SSCCE