我有一个使用 Java3D 和 JPopupMenus 填充 JMenuItems 的 Java 应用程序。当它作为常规应用程序运行时,一切正常——JPopupMenus 和其他一切都按预期运行。但是,当我从应用程序中创建一个小程序时,完全弹出 Canvas3D 的 JPopupMenu 并没有按预期运行。JPopupMenu 的行为如下:
- 当鼠标移到菜单项上时,菜单项不会突出显示
- 箭头键不能用于在菜单项之间移动
- 单击顶级 JMenuItem 完成操作并突出显示该项目,但它不会像在常规应用程序中那样处理 JPopupMenu
- 单击包含子菜单的顶级 JMenuItem 不会执行任何操作
- 在 JPopupMenu 外部单击不会像在常规应用程序中那样处理 JPopupMenu
- 显示 JPopupMenu 后,在我的程序的摆动部分顶部打开 JPopupMenu 可以使 JPopupMenu 在 Canvas3D 上的常规和预期行为,但第 5 点仍然适用
更多信息:
- JPopupMenu 与 JPopupMenu.show() 一起显示,与持有 Canvas3D 的 JPanel 相关
- 我在创建任何 JPopupMenus 之前调用 JPopupMenu.setDefaultLightWeightPopupEnabled(false),但这条线似乎没有什么不同。
- 我认为这可能是一个焦点问题,但 JPopupMenu.requestFocusInWindow() 不起作用
所以我的问题是:是什么导致应用程序和小程序之间的行为不同,以及如何使小程序中的 JPopupMenu 像在应用程序中一样运行?