私のアプリケーションでは、マウスとキーボードのイベントを不可視のJPanelに転送したいと思います.JPanelがEDTから来たかのように処理するようにしたいと思います。これは、アプリケーションがJOGLをレンダリングに使用するためのオプションの拡張機能を持っているためです。私はすでにSwingにGUIのものを書いているので、そのコードを再利用したいと思います。残念ながら、SwingとJOGLのGLCanvasを混在させることはできません(私はGLJpanelを使うことができますが、使用するには遅すぎます)。ただし、JOGLには、グラフィックスインスタンスを描画してGLコンテキストに描画させる機能(オーバーレイ)があります。そこで、jpanel.paint(g)を呼び出して、うまく動作するオーバーレイを使って画面にペイントすることができます。残っているパズルの唯一の部分は、GLCanvas上のマウスとキーボードのリスナーを使用してJPanelにイベントを受け取り、転送することです。イベントディスパッチスレッドのシミュレーション
findComponentAt(mousex、mousey)を使用して特定の場所にあるJPanelのコンポーネントを取得し、そのコンポーネントにdispatchEventを呼び出そうとしましたが、コンポーネントがマウスクリックなどに反応しません。私は、EDTがMouseEvent/KeyEventからActionEventへの何らかの変換を行って、ボタンやテキストフィールドを正しく動作させることを前提としています。最悪が最悪になる場合は、コンポーネントがJButtonであるかどうかをテストし、少なくとも私にいくつかの機能を与えるdoClickを使用します。しかし、これはボタン以外のコンポーネントでは機能しませんし、ボタンをホバーするなどの操作も行いません。私はおそらくこのためにOpenGL GUIツールキット(FengGUIなど)を使用すべきであることを知っていますが、私はSwingのHTMLレンダリング機能に頼っているので、そのコードを書き直そうとはしません。
GLCanvasからMouseEventsを適切に受け取ってJPanelに転送するにはどうすれば適切な処理が行われるのですか? (すなわち、ボタンのアクションリスナーが活性化されるホバーするとき、ボタン等、異なるグラフィックを示し、)
任意のヒントを大幅How to Use Root Panes: The Glass Paneで
*「何かヒントをいただければ幸いです」* 1)息を飲む。 2)質問をする。 –