Brücke zwischen Java-applet und dem text-Eingabe-Steuerelemente auf der web-Seite
Habe ich die Arbeit mit einem Java-applet ist ein applet, das hilft, zu schreiben, mit nur einer Maus. Für meinen Fall, ich versuche, integrieren diese in mein Projekt webiste wie folgt:
Wenn der Benutzer klickt auf eine Eingabe-element (Textfeld, textarea) auf der Seite, die das JAVA-applet geladen, auf der Webseite selbst. Im screenshot des JAVA-Applets unten gesehen, die Benutzer Punkte, um ein alphabet zu und der entsprechende text geschrieben wird in das Textfeld des Applets.
Nun, was ich versuche zu tun ist, um diesen text aus dem Textfeld des Applets auf das input-element auf der Webseite. Ich weiß, dass hier eine Interaktion zwischen Java und JavaScript, aber nicht als Profi, ich wirklich nicht fangen. Hier ist das Java-applet und der code, den ich geschrieben habe.
Java-applet und jQuery-code (298kB): http://bit.ly/jItN9m
Könnte bitte somebdoy Hilfe für die Ausweitung dieser code.
Vielen Dank!
Update
Habe ich gesucht und irgendwo gefunden, das -> Um den text innerhalb der Java-text-box, eine getter-Methode in der Applet zum abrufen des Textes:
public class MyApplet extends JApplet {
//...
public String getTextBoxText() { return myTextBox.getText(); }
}
In der JQuery-code, werden die folgenden Zeilen Hinzugefügt werden, denke ich:
var textBoxText = $("#applet-id")[0].getTextBoxText();
//Now do something with the text
Für den code des Applets, sah ich einen GNOME-git-Seite hier. Die getText-Aufruf existiert bereits-schauen Sie am Ende dieser Datei: http://git.gnome.org/browse/dasher/tree/java/dasher/applet/JDasherApplet.java
Ich würde anrufen müssen 'getCurrentEditBoxText" aber wenn sollte diese Methode 'getCurrentEditBoxText" genannt werden?
In meinem Fall hätte ich wahrscheinlich, um es zu tun, wenn der Benutzer klickt in einem neuen Eingabe-control etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie die vollständige Kommunikation zwischen dem Applet und der javascript-Methode auf der Seite. Kyle hat einen guten posten, die zeigen, wie die Javascript aufrufen können Sie das applet und die Anforderung, den text-Wert. Aber ich nehme an, Sie wollen die HTML-Textfield aktualisieren mit jeder Maus auf, was bedeutet, das applet braucht, um mit der Seite kommunizieren. Ich ändern Sie Ihr javascript, um so etwas wie dieses:
Vorausgesetzt, Sie haben den Quelltext für das applet, können Sie es, kommunizieren Sie mit den oben genannten javascript-Funktion. Fügen Sie diese importieren:
Und dann, in welcher onClick-handler haben Sie für die Maus-Klicks hinzufügen:
Aktualisiert wird der text jedes mal das Stück code aufgerufen wird. Wenn Sie keinen Zugriff auf das applet-Quelle, werden die Dinge komplizierter. Würden Sie benötigen, um eine bestimmte Art von javascript-timeout, der ständig liest den Wert aus dem applet, aber dies setzt Voraus das applet hat eine solche Methode gibt den Wert der textbox.
Siehe Auch: http://java.sun.com/products/plugin/1.3/docs/jsobject.html
Update Ändern der applet ist die beste Wahl, da hier jedes Ereignis hätte ausgelöst werden. Zum Beispiel, wenn Sie möchten, dass die HTML-TextField ändern bei jedem Klick, der Klick passiert in dem applet, das würde geändert werden müssen, um trigger das update, wie oben beschrieben. Ohne änderung der applet sehe ich zwei Optionen. Option #1 wird ein timer:
Dies ist ähnlich wie der code oben, außer Klick auf einen text-Bereich löst die looping-Funktion
updateText()
die den Wert der HTML-text-Feld auf den Wert des Applet-text-Feld jede 50ms. Dies wird möglicherweise die Einführung einer geringfügigen Verzögerung zwischen klicken und aktualisieren, aber es wäre klein. Erhöhen Sie die timer-Frequenz, aber das wird fügen Sie eine Leistung in Anspruch. Ich sehe nicht, wo man "versteckt" das applet, aber das gleiche Funktion aufrufen sollenstopUpdating
so, dass wir nicht mehr versuchen, eine Verbindung mit einem verborgenen Netzwerk.Option #2 (nicht kodiert)
Ich würde, um zu versuchen und zu erfassen klicken Sie im Applet, wie es Blasen durch das HTML-Dom. Könnte dann überspringen Sie den timer und stellen eine
click()
Verhalten auf der Applet-container, das gleiche zu tun update. Ich bin mir nicht sicher, ob solche Ereignisse Blase, obwohl, so dass nicht sicher, ob das funktionieren würde. Selbst wenn es das täte, bin ich mir nicht sicher wie kompatibel es wäre in allen Browsern.Option #3
Dritte option ist, um keine Aktualisierung des HTML-text-Feld bei jedem Klick. Dies wäre einfach eine Kombination von Kyle ' s und meine posts oben, um den Wert des Textfelds, wenn Sie 'fertig' mit dem applet.
Hier ist eine mögliche Lösung. Um den text in dein Java-Textfeld schreiben Sie eine getter-Methode in der Applet zum abrufen des Textes:
In Ihre JQuery-code, fügen Sie die folgenden Zeilen:
Fand ich das meiste, was ich oben geschrieben hier. Hoffe, das hilft.
Auf dieser Seite erklärt, wie Sie zu manipulieren DOM aus einem Java-applet. Zu finden ist das input-element, rufen Sie einfach das Dokument.getElementById(id) - Funktion mit der id ein id-Attribut der text-Eingabe-Feld.