2009-08-16 5 views
0

Ich versuche, einen Java JFrame in einen Container innerhalb eines C# -Formulars einzufügen. Der JFrame, den ich habe, implementiert auch einen AppletStub, und ich habe IKVM verwendet, um das Interopting durchzuführen, aber das Problem, das ich bekomme, ist, dass das Applet, das in den AppletStub geladen wurde, einfriert. Aber es funktioniert perfekt, wenn es nicht mit C# interoptiert. Dies ist das einzige, was ich tue, indem ich versuche, diesen JFrame in mein C# -Formular zu laden und 2 ganzzahlige Werte an den JFrame zu übergeben. Bitte lassen Sie mich wissen, ob es eine einfache Lösung dafür gibt ...?Jframe in C# -Formular

Auch lassen Sie mich wissen, ob dies viel einfacher in C++ wird eher dann # C, so kann ich nur Java tun -> C++ -> C# ~ Dank

Antwort

0

Ich vermute, dass Sie Probleme mit der IKVM/Swing Vorstellung davon, was der UI-Thread ist clashing mit der WinForms Idee dito können mit - wie eingefroren manifestiert Code, der versuchte, WinForms UI Operationen auf dem falschen Thread ausführt in der Regel am Ende Benutzeroberfläche. Ich habe mich nicht mit den Interna der IKVM-GUI-Implementierung beschäftigt, um einen Workaround riskieren zu können (beim letzten Mal, als ich UI-Sachen im IKVM ausprobierte, war klar, dass dies keine Priorität für dieses Projekt war).

+0

Sie sagen also, das ist nicht möglich ...? –

+0

Es ist Software, Open Source im Fall von IKVM, also ist die Definition von "nicht möglich" eine ziemlich elastische; aber Sie müssten wahrscheinlich ein wenig in die IKVM-Interna eindringen, um das Problem zu diagnostizieren. Es ist möglich, dass jeder Aufruf einer UI-Komponente mit einem entsprechenden Versand an den UI-Thread umschlossen wird, aber ich kann nicht sicher sein, ohne die Implementierungsdetails zu beachten. Sie können etwas tun, indem Sie den JFrame außerhalb des Bildschirms halten und seinen Inhalt als Bild in das WinForm-Objekt rendern und dann Ereignisse auf dem WinForm-Objekt an den JFrame zurücksenden. –

+0

Ich mag deine Idee, den JFrame außerhalb des Bildschirms zu halten und seinen Inhalt einfach als Bild zu rendern! Hätten Sie einen Rat/Vorschlag, wie das möglich wäre? (Ich bin nicht so erfahren mit C# und Java, also kann ich mir keinen anderen Weg vorstellen, als das gerenderte Bild zwischenzuspeichern und es in der Winform anzuzeigen, das einzige Problem dabei wäre eine Menge Ressourcenverbrauch und CPU - Nutzung seit der Bild im Inneren des JFrame wird ständig bewegt werden ...) Bitte schlagen Sie die beste Lösung :) –

0

Hmm, das ist ein wenig seltsam.

Vielleicht könnte ein lahmes Trick sein, das Applet als HTML in einem relevanten C# Steuerelement zu setzen?

+0

Aber es ist kein Applet, ich habe versucht, die JFrame in ein Applet oder zumindest ein JApplet, aber beide bekommen Erlaubnis verweigert Fehler, wenn versucht, den AppletStub zu verwenden. –

+0

Ah, kein Applet. Gut. Darüber habe ich keine Ahnung. Es tut uns leid. –