我有一个使用Java3D和填充了JMenuItems的JPopupMenus的Java应用程序。当作为常规应用程序运行时,一切正常--JPopupMenus和其他所有内容的行为都符合预期。但是,当我将应用程序制作成applet时,弹出在Canvas3D上方的JPopupMenu不像预期那样工作。具体而言,JPopupMenu的行为如下:
- 鼠标移动到菜单项上时,菜单项没有高亮显示
- 无法使用箭头键浏览菜单项
- 单击顶级JMenuItem会完成操作并突出显示该项,但它不像常规应用程序中那样销毁JPopupMenu
- 单击包含子菜单的顶级JMenuItem不起作用
- 单击JPopupMenu之外的区域不会像常规应用程序中那样销毁JPopupMenu
- 当JPopupMenu被显示时,在我的程序的swing部分上打开JPopupMenu会使JPopupMenu在Canvas3D上表现出常规和预期的行为,但仍然存在第5点
以下是一些更多信息:
- JPopupMenu是使用与持有Canvas3D的JPanel相关的JPopupMenu.show()显示的
- 在创建任何JPopupMenus之前,我调用了JPopupMenu.setDefaultLightWeightPopupEnabled(false),但这条线似乎没有什么区别
- 我认为这可能是一个焦点问题,但JPopupMenu.requestFocusInWindow()不起作用
因此,我的问题是:是什么导致应用程序和applet之间的行为不同,以及如何使applet中的JPopupMenu像应用程序中那样工作?