Pergunta

Posso colocar um controle Java (SWT, Swing, ...) em um controle C #?

Eu sei que é possível com os controles da web, mas eu não gosto desta forma.

Foi útil?

Solução

Eu reverificados que, parece que IKVM atualmente tem o apoio não é suficiente nele do AFT montagem. Eu acho que a única maneira de fazer o que você precisa é executado você java controlar dentro de processo separado com a janela principal escondida e passar alça de que o controle de sua aplicação C # de alguma forma.


resposta Original:

Eu não tenho certeza se você pode apenas "adicionar", mas você pode tentar este sentido:

Seria necessário converter classes Java para montagens Net via IKVM.

  1. Primeiro de tudo você precisa para obter alça de controle de java. Você pode olhar para este post se você precisar de informações sobre como fazer isto. Eu falhou neste passo, porque eu não encontrei Win32DrawingSurface e DrawingSurfaces em bibliotecas de IKVM, talvez seja suficiente apenas para criar algum estática GetHandle () método no lado do java.

  2. Obter alça do seu pai controle C #. É simples já que o controle tem sua propriedade Handle.

  3. Depois de obter as duas alças você pode definir um dos como pai para outro. Para fazer isso você precisa chamar a função SetParent do WINAPI.

    [DllImport ( "user32.dll")] extern private static IntPtr SetParent (IntPtr hWndChild, IntPtr hWndNewParent);

Outras dicas

Eu escrevi exemplos: Restaurant - Java componente de incorporação no .NET GUI, Restaurant - NET WinForm componente embutido em Java GUI. Como você pode encontrá-los nos produtos:

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

Você pode usar JNBridge para fazê-lo.

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

Se o controle não é um controle personalizado e é apenas algo em balanço que você pode achar que é disponível em Microsoft Visual J # (qualquer versão 2.0 ou o suplemento suplementar em para 1.1 http://msdn.microsoft.com/en-us/vjsharp/bb188695. aspx )

Note que a J # controle do balanço não vai jogar bola caiu em um WinForms aplicativo diretamente, você pode precisar fornecer um controle de host que delega toda a pintura para copiar a imagem de um escondido J # Controle colocado dentro de um # formulário simples j (também escondida onde a área vista do formulário é redimensionado para coincidir com a área de exibição do controle de host. Isso, pelo menos, eliminar a necessidade de um processo separado. Este uso tem várias limitações, eu suspeito que o controle que você deseja usar é complexa (ou você faria apenas ter reimplemented-lo).

Note que J # está morrendo oficialmente (não mais sério de manutenção) e oficialmente não vai incomodar para apoiá-lo em tudo em 2015. Esperam usá-lo para lhe causar dor considerável no longo prazo, mas se você realmente precisa de alguma parte dela isso pode ajudar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top