




Ознакомьтесь с проектом ИКВМ. Это виртуальная машина Java, реализованная в .net, которая обеспечивает взаимодействие Java и .net.
Не уверен, насколько он полон и включает ли он нужную вам функциональность, но на него стоит взглянуть.
Я перепроверил это, похоже, что IKVM в настоящее время не имеет достаточной поддержки в сборке AFT. Я думаю, что единственный способ сделать то, что вам нужно, - запустить Java-элемент управления внутри отдельного процесса со скрытым главным окном и каким-то образом передать дескриптор этого элемента управления вашему приложению C#.
Оригинальный ответ:
Я не уверен, что вы можете просто «добавить» это, но вы можете попробовать это направление:
Было бы необходимо преобразовать классы java в сборки .Net через IKVM.
Прежде всего вам нужно получить дескриптор управления java. Вы можете посмотреть эта почта, если вам нужна информация о том, как это сделать. Я потерпел неудачу на этом этапе, потому что я не нашел Win32DrawingSurface и DrawingSurfaces в библиотеках IKVM, может быть, достаточно просто создать некоторый статический метод getHandle () на стороне java.
Получите дескриптор родительского элемента управления C#. Это просто, поскольку Control имеет свойство Handle.
После получения обоих дескрипторов вы можете установить один из них как родительский для другого. Для этого вам нужно вызвать функцию SetParent из WINAPI.
[DllImport ("user32.dll")] частный статический extern IntPtr SetParent (IntPtr hWndChild, IntPtr hWndNewParent);
Если элемент управления не является настраиваемым элементом управления, а находится в стадии разработки, вы можете найти его в Microsoft Visual J # (версия 2.0 или дополнительная надстройка для 1.1. http://msdn.microsoft.com/en-us/vjsharp/bb188695.aspx)
Обратите внимание, что элемент управления J # Swing не будет воспроизводить мяч, брошенный в приложении WinForms напрямую, вам может потребоваться предоставить элемент управления хоста, который делегирует все рисование на копирование изображения из скрытого элемента управления J #, помещенного в простую форму j # (также скрытую там, где форма размер области просмотра изменяется в соответствии с областью просмотра основного элемента управления. Это, по крайней мере, устранило бы необходимость в отдельном процессе. Это использование имеет несколько ограничений, я подозреваю, что элемент управления, который вы хотите использовать, является сложным (или вы бы просто повторно реализовали Это).
Обратите внимание, что J # официально умирает (более серьезное обслуживание не требуется) и официально не будет вообще поддерживать его в 2015 году. Ожидайте, что его использование вызовет у вас значительную боль в долгосрочной перспективе, но если вам действительно нужна какая-то его часть, это может помочь.
Я написал примеры:
- Встраивание Java-компонента в .NET GUI,
- Встраивание компонента .NET WinForm в графический интерфейс Java.
Вы можете найти их в товарах:
http://www.simtel.net/product.php[id visible95126[SiteID visiblesimtel.net
http://www.simtel.net/product.php[id visible98653[SiteID visiblesimtel.net
Для этого вы можете использовать JNBridge.