Pregunta

¿Puedo poner un control Java (SWT, Swing, ...) en un control C #?

Sé que es posible con los controles web, pero no me gusta de esta manera.

¿Fue útil?

Solución

He vuelto a comprobar eso, parece que IKVM actualmente no tiene suficiente soporte en su ensamblaje AFT. Creo que la única forma de hacer lo que necesita es ejecutar su control Java dentro de un proceso separado con una ventana principal oculta y pasar el control de ese control a su aplicación C # de alguna manera.


Respuesta original:

No estoy seguro de si puedes simplemente " agregar " pero puedes probar esta dirección:

Sería necesario convertir las clases de Java en ensamblados .Net a través de IKVM.

  1. En primer lugar, necesita obtener el control de Java. Puede consultar esta publicación si necesita información sobre cómo hacerlo esta. Fallé en este paso porque no he encontrado Win32DrawingSurface y DrawingSurfaces en las bibliotecas de IKVM, tal vez sea suficiente para crear un método estático getHandle () en el lado de Java.

  2. Obtenga el control de su control C # primario. Es simple ya que Control tiene su propiedad Handle.

  3. Después de obtener ambos manejadores, puede configurar uno de los padres como otro. Para hacer esto, debe llamar a la función SetParent desde WINAPI.

    [DllImport (" user32.dll ")] Privado estático externo IntPtr SetParent (IntPtr hWndChild, IntPtr hWndNewParent);

Otros consejos

Escribí ejemplos:
- Integración de componentes Java en .NET GUI,
- Incrustación de componentes .NET WinForm en Java GUI.
Puedes encontrarlos en los productos:

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

Puede usar JNBridge para hacerlo.

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

Consulte el proyecto IKVM . Es una máquina virtual Java implementada en .net que permite la interoperabilidad de Java y .net.

No estoy seguro de cuán completo es y si permite la funcionalidad que necesita, pero vale la pena echarle un vistazo.

Si el control no es un control personalizado y es simplemente algo en movimiento, puede encontrarlo disponible en Visual J # de Microsoft (ya sea la Versión 2.0 o el complemento suplementario para 1.1 http://msdn.microsoft.com/en-us/vjsharp/bb188695. aspx )

Tenga en cuenta que un control J # Swing no jugará la bola caída directamente en una aplicación WinForms, es posible que deba proporcionar un control de host que delegue toda la pintura para copiar la imagen de un control J # oculto colocado dentro de un formulario j # simple (también oculto donde el área de vista del formulario cambia de tamaño para que coincida con el área de vista del control del host. Esto al menos eliminaría la necesidad de un proceso separado. Este uso tiene varias limitaciones, sospecho que el control que desea usar es complejo (o usted simplemente lo he vuelto a implementar).

Tenga en cuenta que J # está muriendo oficialmente (no más mantenimiento serio) y oficialmente no se molestará en apoyarlo en absoluto en 2015. Espere usarlo para causarle un dolor considerable a largo plazo, pero si realmente necesita una parte, podría ser útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top