Java フレーム (Java アプリから) で X-Window (C++ アプリから) の親を変更する必要があります。この X-Window は、z-Order が尊重されるように、Java コンポーネント ツリー内に挿入する必要があります。そのためには、次のことを理解する必要があります。
- まず、Java アプリケーションによって作成されたコンポーネント ツリーと、対応する X-Window ツリーとの正確な関係。
- 第二に、reparent のおかげで Java ツリーに X-Window を挿入できるかどうか、およびどこに挿入できるか。
- 第 3 に、ウィンドウ/コンポーネント スタックの処理方法: どのウィンドウ/コンポーネントが別のウィンドウの上にあるのか。
数週間の調査...しかし、これらの質問に関するリソースは見つかりません...
質問について 1.私が理解している限り、コンポーネントと他の 2 つのフレームを含む Java メイン フレームを作成すると、Swing ツリーは次のようになります。
Frame0
:
:-------------------------------
: : :
Component Frame1 Frame2
:
Component-----------Component
X-Window ツリーについて: 各フレームは重いコンポーネントなので、各フレームには X-Window ID があります。したがって、X-Window ツリーは次のようになります。
Frame0
:
Frame1---------Frame2
質問について 2.私の質問は、Swing ツリーの他のコンポーネントの真ん中にアプレット (つまり重量コンポーネント) を挿入するとどうなるかということです。X-window はどのように見えるでしょうか? この方法で、Java アプリケーションの X-Window の親を変更でき、この X-Window が Java ツリーに挿入されることを願っています。
質問について 3.X-Window を再親化/Java アプリケーションに挿入できたとしても、z オーダーが尊重されるかどうかはわかりません。実際に試してみたところ、Java Frame のすべてのコンポーネントの上に X-Window が表示されました。ウィンドウ/コンポーネント スタックの処理方法と、Java および X-Window ツリーとの関係がよくわかりません。