gpt4 book ai didi

java - swing java app 和 iframe - 双向通信

转载 作者:可可西里 更新时间:2023-11-01 14:49:34 26 4
gpt4 key购买 nike

我有一个 java swing 应用程序,想在 iframe 中呈现 html 页面。根据我在 iframe 中执行的操作,参数或数据是否可以传回我的 java swing 应用程序?

谢谢

最佳答案

可以看看JxBrowser允许将 Google Chromium 引擎嵌入到 Java Swing 应用程序中的库。

它为 Java 到 JavaScript 到 Java 的双向通信提供 API:http://www.teamdev.com/downloads/jxbrowser/docs/JxBrowser-PGuide.html#javascript-java-bridge

下面的代码演示了如何嵌入浏览器组件,加载URL,在加载的网页上调用JavaScript代码,并在JavaScript端注册Java函数,每次JavaScript调用它时都会调用它:

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFactory;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;

/**
* The sample demonstrates how to register a new JavaScript function and
* map it to a Java method that will be invoked every time when the JavaScript
* function is invoked.
*/
public class JavaScriptJavaSample {
public static void main(String[] args) {
Browser browser = BrowserFactory.create();
// Register "MyFunction" JavaScript function and associate Java callback with it
browser.registerFunction("MyFunction", new BrowserFunction() {
public JSValue invoke(JSValue... args) {
for (JSValue arg : args) {
System.out.println("arg = " + arg);
}
return JSValue.create("Hello!");
}
});

// Create JFrame and embed Browser component to display web pages
JFrame frame = new JFrame();
frame.add(browser.getView().getComponent(), BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

// Register Load listener to get notification when web page is loaded completely
browser.addLoadListener(new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if (event.isMainFrame()) {
Browser browser = event.getBrowser();
// Invoke our registered JavaScript function
JSValue returnValue = browser.executeJavaScriptAndReturnValue(
"MyFunction('Hello JxBrowser!', 1, 2, 3, true);");
System.out.println("return value = " + returnValue);
}
}
});
browser.loadURL("about:blank");
}
}

关于java - swing java app 和 iframe - 双向通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22318056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com