JMenuItemsで満たされたJava3DとJPopupMenusを使用するJavaアプリケーションがあります。通常のアプリケーションとして実行すると、すべてが正常に機能します。JPopupMenusおよびその他すべてが期待どおりに動作します。ただし、アプリケーションからアプレットを作成すると、Canvas3D上に完全にポップアップするJPopupMenuが期待どおりに機能しません。JPopupMenuは次のように動作します。
- マウスがメニュー項目の上を移動しても、メニュー項目は強調表示されません
- 矢印キーを使用してメニュー項目間を移動することはできません
- トップレベルのJMenuItemをクリックすると、アクションが完了してアイテムが強調表示されますが、通常のアプリケーションの場合のようにJPopupMenuは破棄されません。
- サブメニューを含むトップレベルのJMenuItemをクリックしても、何も起こりません。
- JPopupMenuの外側をクリックしても、通常のアプリケーションのようにJPopupMenuは破棄されません。
- JPopupMenuが表示されている状態で、プログラムのスイング部分の上でJPopupMenuを開くと、Canvas3D上でJPopupMenuの通常の予想される動作が可能になりますが、ポイント5は引き続き適用されます。
いくつかの詳細情報:
- JPopupMenuは、Canvas3Dを保持しているJPanelに関連してJPopupMenu.show()で表示されます。
- JPopupMenusを作成する前にJPopupMenu.setDefaultLightWeightPopupEnabled(false)を呼び出していますが、この行は違いがないようです。
- これがフォーカスの問題である可能性があると思いましたが、JPopupMenu.requestFocusInWindow()が機能しません
だから私の質問は、アプリケーションとアプレットの間で動作が異なる原因は何ですか?アプレットのJPopupMenuをアプリケーションの場合と同じように機能させるにはどうすればよいですか?