gpt4 book ai didi

jxBrowser错误类不存在

转载 作者:行者123 更新时间:2023-12-02 22:31:51 24 4
gpt4 key购买 nike

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;

import javax.swing.*;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class JavaScriptJavaSample {
public static void main(String[] args) {
LoggerProvider.setLevel(Level.OFF);
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);

browser.registerFunction("MyFunction", new BrowserFunction() {
public JSValue invoke(JSValue... args) {
System.out.println("MyFunction is invoked!");
return JSValue.create("Hello!");
}
});

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

browser.loadHTML("<html><body><a href='#' onclick='MyFunction();'>Call Java method</a></body></html>");
}
}

我已经添加了所有 jar 文件,但 BrowserFunction 不存在,为什么?

所有其他类都工作得很好,并且不明白这个问题,我

提前感谢所有导入了所有 jar

最佳答案

据我所知,使用BrowserFunction()来注册函数在新版本的jxbrowser中已经消失了。 6.1版本中有一种新的方式描述here 。将新方式放入您的代码中:

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserFunction;
import com.teamdev.jxbrowser.chromium.JSValue;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;

import javax.swing.*;
import java.awt.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class JavaScriptJavaSample {
public static void main(String[] args) {
LoggerProvider.setLevel(Level.OFF);
Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);

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("java", new Events());
}
}
});

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

browser.loadHTML("<html><body><a href='#' onclick='alert(java.MyFunction());return false;'>Call Java method</a></body></html>");
}
}

创建另一个文件来保存Events类:

public class Events {

public String MyFunction() {

System.out.println("MyFunction is invoked!");

return new String("Hello");

}

}

* 在a标签的onclick属性末尾添加了return false,防止浏览器跟踪链接href 点击。顺便说一句,我建议您使用 main documentation代码,因为它们是最新的。

关于jxBrowser错误类不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36184871/

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