Question

Puis-je placer un contrôle Java (SWT, Swing, ...) sur un contrôle C #?

Je sais que c'est possible avec les contrôles Web, mais je n'aime pas cette façon.

Était-ce utile?

La solution

J'ai revérifié cela, il semblerait qu'IKVM ne prenne actuellement pas assez en charge l'assemblage AFT. Je pense que la seule façon de faire ce dont vous avez besoin est d’exécuter votre contrôle Java dans un processus séparé avec une fenêtre principale masquée et de transmettre le contrôle de ce contrôle à votre application C #.

Réponse originale:

Je ne sais pas si vous pouvez simplement "ajouter". mais vous pouvez essayer cette direction:

Il serait nécessaire de convertir les classes java en assemblages .Net via IKVM.

  1. Tout d'abord, vous devez maîtriser le contrôle Java. Vous pouvez consulter ce message si vous avez besoin d'informations sur la procédure à suivre. ce. J'ai échoué à cette étape car je n'ai pas trouvé Win32DrawingSurface et DrawingSurfaces dans les bibliothèques d'IKVM. Peut-être suffit-il de créer une méthode getHandle () statique du côté java.

  2. Récupère le contrôle de votre contrôle C # parent. C’est simple puisque Control a sa propriété Handle.

  3. Après avoir obtenu les deux descripteurs, vous pouvez définir l’un des parents comme parent. Pour ce faire, vous devez appeler la fonction SetParent à partir de WINAPI.

    [DllImport ("user32.dll")] Extern statique statique IntPtr SetParent (IntPtr hWndChild, IntPtr hWndNewParent);

Autres conseils

J'ai écrit des exemples:
- Composant Java incorporant dans une interface graphique .NET,
- .NET WinForm Composant incorporant dans l'interface graphique Java.
Vous pouvez les trouver dans les produits:

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

Vous pouvez utiliser JNBridge pour le faire.

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

Consultez le projet IKVM . C’est une machine virtuelle Java implémentée en .net qui permet l’interopérabilité entre java et .net.

Je ne sais pas exactement à quel point il est complet et s'il permet la fonctionnalité dont vous avez besoin, mais ça vaut le coup d'oeil.

Si le contrôle n'est pas un contrôle personnalisé et qu'il s'agit simplement d'une fonctionnalité de swing, vous pouvez le trouver disponible dans le Visual J # de Microsoft (version 2.0 ou complément supplémentaire pour la version 1.1) http://msdn.microsoft.com/en-us/vjsharp/bb188695. aspx )

Notez qu'un contrôle J # Swing ne jouera pas la balle déposée dans une application WinForms directement. Vous devrez peut-être fournir un contrôle hôte qui déléguera toute peinture à la copie de l'image à partir d'un contrôle J # caché placé dans un simple formulaire j # (également masqué). lorsque la zone d'affichage du formulaire est redimensionnée pour correspondre à la zone d'affichage du contrôle hôte. Cela supprime au moins la nécessité d'un processus séparé. Cette utilisation comporte plusieurs limitations, je soupçonne que le contrôle que vous souhaitez utiliser est complexe (ou viens de le réimplémenter).

Notez que J # est officiellement en train de mourir (pas d’entretien plus sérieux) et ne se souciera pas officiellement de le soutenir du tout en 2015. Attendez-vous à l'utiliser à long terme, mais si vous en avez vraiment besoin, cela pourrait vous aider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top