У меня есть приложение Java, которое использует Java3D и JPopupMenus, заполненное JMenuItems. Все работает нормально, когда оно работает как обычное приложение - JPopupMenus и все остальное ведут себя так, как ожидалось. Однако, когда я делаю апплет из приложения, JPopupMenu, полностью всплывающее поверх Canvas3D, не работает должным образом. JPopupMenu ведет себя следующим образом:
- Пункты меню не выделяются при наведении на них указателя мыши.
- Клавиши со стрелками не могут использоваться для перемещения по пунктам меню.
- Щелчок по JMenuItem верхнего уровня завершает действие и выделяет элемент, но не удаляет JPopupMenu, как в обычном приложении.
- Щелчок по JMenuItem верхнего уровня, который содержит подменю, ничего не делает
- Щелчок за пределами JPopupMenu не удаляет JPopupMenu, как в обычном приложении.
- При отображении JPopupMenu открытие JPopupMenu поверх качающейся части моей программы обеспечивает обычное и ожидаемое поведение JPopupMenu над Canvas3D, но пункт 5 все еще применяется.
Еще немного информации:
- JPopupMenu отображается с помощью JPopupMenu.show() по отношению к JPanel, содержащему Canvas3D.
- Я вызываю JPopupMenu.setDefaultLightWeightPopupEnabled(false) перед созданием любого JPopupMenus, но эта строка, похоже, не имеет значения.
- Я думал, что это может быть проблема с фокусом, но JPopupMenu.requestFocusInWindow() не работает
Итак, мой вопрос: что вызывает различие в поведении между приложением и апплетом, и как я могу заставить JPopupMenu в апплете функционировать так же, как в приложении?