2011-01-26 4 views
3

J'essaie d'intégrer un HWND (Window Handle) dans un JPanel.Embed HWND (Window Handle) dans un JPanel

En fait, je peux intégrer mon HWND dans un JFrame, mais la fenêtre intégrée reste toujours au-dessus de l'autre composant et je ne peux pas le déplacer. Si un essai pour enlever tout le composant d'enfant de mon JFrame, le HWND reste là. Le HWND semble être la peinture sur le JFrame et non comme l'un de ses enfants.

Pour intégrer le HWND dans le JPanel j'utilise User32 par jna:

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

Et je l'utiliser pour obtenir le HWND de mon JFrame:

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

Est-il possible d'intégrer un HWND dans un JPanel ou pour l'ajouter dans un autre composant afin que je puisse le positionner comme je le voulais dans mon interface utilisateur?

Merci

Répondre

3

JPanels sont des composants allégés (ils ont pas vraiment de pair natif). c'est-à-dire qu'ils utilisent déjà la poignée du cadre (J). Regardez java.awt.Canvas.

+0

Merci beaucoup, je peux lier mon HWND sur la toile et l'ajouter à un JPanel par la suite. – Etienne

+0

Bienvenue! Gardez à l'esprit: il pourrait y avoir beaucoup d'effets inattendus mélangeant des composants lourdement pesés dans des conteneurs légers (c.-à-d. Canvas in JPanel), Java a apporté quelques améliorations à ce sujet, mais soyez prudent. Cependant, je n'utilise pas de trucs lourds depuis 9 ans. – bestsss

Questions connexes