Как встроить элемент управления Java в элемент управления winforms C #? - PullRequest
2 голосов
/ 14 января 2009

Можно ли поместить элемент управления Java (SWT, Swing, ...) в элемент управления C #?

Я знаю, что это возможно с помощью веб-элементов управления, но мне не нравится этот способ.

Ответы [ 5 ]

1 голос
/ 12 августа 2009

Вы можете использовать JNBridge, чтобы сделать это.

http://www.jnbridge.com/jnbp-examples.htm#JinN

1 голос
/ 01 февраля 2009

я написал примеры:
- встраивание компонента Java в .NET GUI,
- .NET встраивание компонентов WinForm в Java GUI.
Вы можете найти их в продуктах:

http://www.simtel.net/product.php[id]95126[SiteID]simtel.net
http://www.simtel.net/product.php[id]98653[SiteID]simtel.net

1 голос
/ 14 января 2009

Я перепроверил это, похоже, IKVM в настоящее время не имеет достаточной поддержки в сборке AFT. Я думаю, что единственный способ сделать то, что вам нужно, это запустить свой java-контроль внутри отдельного процесса со скрытым главным окном и как-то передать дескриптор этого элемента управления в свое приложение C #.


Оригинальный ответ:

Я не уверен, что вы можете просто «добавить» его, но вы можете попробовать следующее:

Необходимо преобразовать Java-классы в сборки .Net через IKVM.

  1. Прежде всего вам нужно получить контроль над Java-контролем. Вы можете посмотреть этот пост , если вам нужна информация, как это сделать. Я потерпел неудачу на этом этапе, потому что я не нашел Win32DrawingSurface и DrawingSurfaces в библиотеках IKVM, возможно, этого достаточно, чтобы просто создать статический метод getHandle () на стороне java.

  2. Получить дескриптор вашего родительского элемента управления C #. Это просто, поскольку у Control есть свойство Handle.

  3. После получения обеих ручек вы можете установить одну из родительских в другую. Для этого вам нужно вызвать функцию SetParent из WINAPI.

    [DllImport ( "user32.dll")] частный статический extern IntPtr SetParent (IntPtr hWndChild, IntPtr hWndNewParent);

0 голосов
/ 21 января 2009

Если элемент управления не является настраиваемым и представляет собой просто что-то, находящееся в разгаре, вы можете найти его доступным в Microsoft Visual J # (версия 2.0 или дополнительное дополнение для 1.1 http://msdn.microsoft.com/en-us/vjsharp/bb188695.aspx)

Обратите внимание, что элемент управления J # Swing не будет играть мяч, отброшенный в приложении WinForms напрямую, вам может потребоваться предоставить хост-элемент управления, который делегирует всю рисование для копирования изображения из скрытого элемента управления J #, помещенного в простую форму j # (также скрытую). где область просмотра формы изменяется в соответствии с областью просмотра хост-элемента управления. Это, по крайней мере, устраняет необходимость в отдельном процессе. Такое использование имеет несколько ограничений, я подозреваю, что элемент управления, который вы хотите использовать, является сложным (или вы просто переопределил это).

Обратите внимание, что J # официально умирает (не более серьезное обслуживание) и официально не будет поддерживать его вообще в 2015 году. Ожидайте, что его использование принесет вам значительную боль в долгосрочной перспективе, но если вам действительно нужна какая-то его часть, это может помочь.

0 голосов
/ 14 января 2009

Ознакомьтесь с проектом IKVM . Это виртуальная машина Java, реализованная в .net, которая обеспечивает совместимость java и .net.

Не знаю точно, насколько он завершен, и если он обеспечивает требуемую функциональность, стоит посмотреть.

...