import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
import java.util.logging.Level;
/**
* The sample demonstrates how to send form data from JavaScript to Java.
*/
public class JavaScriptJavaFormSample {
public static void main(String[] args) {
LoggerProvider.setLevel(Level.OFF);
Browser browser = new Browser();
BrowserView view = new BrowserView(browser);
JFrame frame = new JFrame();
frame.getContentPane().add(view, BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if (event.isMainFrame()) {
Browser browser = event.getBrowser();
JSValue value = browser.executeJavaScriptAndReturnValue("window");
value.asObject().setProperty("Account", new Account());
}
}
});
browser.loadURL("form.html");
}
/**
* Java class used for binding Java to JavaScript must be public.
*/
public static class Account {
public void save(String firstName, String lastName) {
System.out.println("firstName = " + firstName);
System.out.println("lastName = " + lastName);
}
}
}
Where the form.html file has the following content:
(其中form.html文件具有以下内容:)
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function sendFormData() {
var firstNameValue = myForm.elements['firstName'].value;
var lastNameValue = myForm.elements['lastName'].value;
// Invoke the 'save' method of the 'Account' Java object.
Account.save(firstNameValue, lastNameValue);
}
</script>
</head>
<body>
<form name="myForm">
First name: <input type="text" name="firstName"/>
<br/>
Last name: <input type="text" name="lastName"/>
<br/>
<input type="button" value="Save" onclick="sendFormData();"/>
</form>
</body>
</html>