2

C# コントロールに Java コントロール (SWT、Swing など) を配置できますか?

Web コントロールでそれが可能であることは知っていますが、この方法は好きではありません。

4

5 に答える 5

2

JNBridge を使用してそれを行うことができます。

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

于 2009-08-11T23:42:33.900 に答える
2

例を書きました:
- .NET GUI に埋め込まれた Java コンポーネント、
- Java GUI に埋め込まれた .NET WinForm コンポーネント。
製品で見つけることができます:

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

于 2009-02-01T19:58:56.480 に答える
1

再確認しましたが、IKVM は現在、AFT アセンブリで十分なサポートがないようです。必要なことを行う唯一の方法は、メイン ウィンドウを非表示にして別のプロセス内で Java コントロールを実行し、そのコントロールのハンドルを何らかの方法で C# アプリケーションに渡すことだと思います。


元の答え:

「追加」できるかどうかはわかりませんが、次の方向を試すことができます。

IKVM を介して Java クラスを .Net アセンブリに変換する必要があります。

  1. まず、Java コントロールのハンドルを取得する必要があります。これを行う方法についての情報が必要な場合は、この投稿を参照してください。IKVM のライブラリに Win32DrawingSurface と DrawingSurfaces が見つからないため、このステップで失敗しました。Java 側で静的な getHandle() メソッドを作成するだけで十分かもしれません。

  2. 親 C# コントロールのハンドルを取得します。Control には Handle プロパティがあるため、簡単です。

  3. 両方のハンドルを取得したら、一方を別の親として設定できます。これを行うには、WINAPI から SetParent 関数を呼び出す必要があります。

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

于 2009-01-14T16:13:26.907 に答える
0

IKVMプロジェクトをチェックしてください。Java と .net の相互運用性を可能にする .net に実装された Java 仮想マシンです。

それがどれほど完全で、必要な機能を有効にするかどうかは正確にはわかりませんが、一見の価値があります.

于 2009-01-14T00:19:19.063 に答える
0

コントロールがカスタム コントロールではなく、単なるスイングである場合は、Microsoft の Visual J# (バージョン 2.0 または 1.1 の追加アドイン http://msdn.microsoft.com/en-us/vjsharp/ ) で利用できる場合があります。 bb188695.aspx )

J# Swing コントロールは、WinForms アプリに直接ドロップされたボールを再生しないことに注意してください。単純な j# フォーム内に配置された非表示の J# コントロールから画像をコピーするためにすべての描画を委任するホスト コントロールを提供する必要がある場合があります (フォームのビュー エリアは、ホスト コントロールのビュー エリアと一致するようにサイズ変更されます. これにより、少なくとも別のプロセスの必要性がなくなります. この使用法にはいくつかの制限があります.それ)。

J# は正式に廃止され (これ以上深刻なメンテナンスは行われません)、公式には 2015 年にはまったくサポートされないことに注意してください。これを使用すると、長期的にはかなりの苦痛が生じることが予想されますが、その一部が本当に必要な場合は、これが役立つ可能性があります。

于 2009-01-21T14:34:46.200 に答える