2011-01-26 3 views
3

Я пытаюсь встроить HWND (Window Handle) в JPanel.Вставить HWND (Window Handle) в JPanel

На самом деле, я могу встроить свой HWND в JFrame, но встроенное окно всегда остается поверх другого компонента, и я не могу его переместить. Если попытаться удалить весь дочерний компонент моего JFrame, HWND останется там. HWND, кажется, краска поверх JFrame, а не как один из детей.

Чтобы встроить HWND в JPanel я использую user32 через ЮНА:

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

И я использую это, чтобы получить HWND моей JFrame:

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

Есть ли способ, чтобы встроить HWND в JPanel или добавить его в другой компонент, чтобы я мог позиционировать его так же, как и в моем пользовательском интерфейсе?

Благодаря

ответ

3

JPanels являются облегченными компонентами (они не имеют никаких реальных родные сверстников). то есть они уже используют дескриптор (J) кадра. Посмотрите на java.awt.Canvas.

+0

Большое спасибо, я могу связать свой HWND на холсте и добавить его в JPanel после этого. – Etienne

+0

Добро пожаловать! Имейте в виду: может быть много неожиданных эффектов, смешивающих тяжело взвешенные компоненты в легковесных контейнерах (т. Е. Холст в JPanel), Java сделал некоторые улучшения по указанному вопросу, но все равно будьте осторожны. Тем не менее, я не использую тяжеловесные вещи, например, 9 лет. – bestsss

Смежные вопросы