2011-01-26 9 views
3

JPanelにHWND(ウィンドウハンドル)を埋め込もうとしています。JPanelにHWND(ウィンドウハンドル)を埋め込む

実際、私はHWNDをJFrameに埋め込むことができますが、埋め込まれたウィンドウは常に他のコンポーネントの上にとどまり、移動できません。私のJFrameのすべての子コンポーネントを削除しようとすると、HWNDはそこにとどまります。 HWNDは、JFrameの上にペイントしているように見えますが、子供の1つではありません。

User32.SetParent(iage.getRenderHwnd(), (int) getGUIHwnd(j)); 

そして、私は私のJFrameのHWNDを取得するためにこれを使用します:私はJNAてがUser32を使用するのJPanelにHWNDを埋め込むこと

j.getPeer() != null ? ((WComponentPeer) j.getPeer()).getHWnd(): 0; 

は埋め込むための方法はありますHWNDをJPanelに追加するか、それを他のコンポーネントに追加してUIのように配置できますか?

ありがとう

答えて

3

JPanelは軽量コンポーネントです(実際のネイティブピアはありません)。すなわち、(J)フレームのハンドルを既に使用している。 java.awt.Canvasを見てください。

+0

ありがとう、私はHWNDをキャンバスにリンクしてからJPanelに追加することができます。 – Etienne

+0

あなたはようこそ!注意:重量の重いコンポーネントを軽量コンテナ(つまり、JPanelのCanvas)に混ぜると予期しない効果が多発する可能性がありますが、Javaはこの問題についていくつか改善しましたが、依然として注意してください。私は9年ほど重いものを使っていません。 – bestsss

関連する問題