自己做网站收费么,网站建设费税率多少,济南网站地址,商场设计软件java内嵌浏览器CEF-JAVA、jcef、java chrome jcef是老牌cef的chrome内嵌方案#xff0c;可以进行java-chrome-h5-桌面开发#xff0c;下面为最新版本#xff08;2023年9月22日10:33:07#xff09; JCEF#xff08;Java Chromium Embedded Framework#xff09;是一个基于…java内嵌浏览器CEF-JAVA、jcef、java chrome jcef是老牌cef的chrome内嵌方案可以进行java-chrome-h5-桌面开发下面为最新版本2023年9月22日10:33:07 JCEFJava Chromium Embedded Framework是一个基于Google Chromium的Java库可以在Java应用程序中嵌入和使用Chromium浏览器引擎。 转自 https://lingkang.top/archives/java-nei-qian-liu-lan-qi-cef-java-jcef-javachrome
pom.xml引入依赖
propertiesmaven.compiler.source21/maven.compiler.sourcemaven.compiler.target21/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding
/propertiesdependenciesdependencygroupIdme.friwi/groupIdartifactIdjcefmaven/artifactIdversion110.0.25.1/version/dependency
/dependenciesrepositoriesrepositoryidtencent/idnametencent/namelayoutdefault/layouturlhttp://mirrors.cloud.tencent.com/nexus/repository/maven-public//urlsnapshotsenabledfalse/enabled/snapshotsreleasesenabledtrue/enabled/releases/repositoryrepositoryidnexus/idnameNexus/namelayoutdefault/layouturlhttps://s01.oss.sonatype.org/content/repositories/snapshots/urlsnapshotsenabledtrue/enabled/snapshotsreleasesenabledtrue/enabled/releases/repositoryrepositoryidaliyunmaven/idurlhttps://maven.aliyun.com/repository/public/urlreleasesenabledtrue/enabled/releasessnapshotsenabledfalse/enabled/snapshots/repository
/repositories上面的Maven依赖不会将chrome浏览器下载的可以通过代码或者手动的方式下载cef的chrome。
方式一推荐
手动方式首先确认你的运行平台
import java.util.Locale;/*** author lingkang* created in 2023/9/22**/
public class PlatformTest {public static void main(String[] args) throws Exception{System.out.println(EnumPlatform.getCurrentPlatform().getOs().name().toLowerCase(Locale.ENGLISH));System.out.println(EnumPlatform.getCurrentPlatform().getIdentifier().split(-)[1]);}
}输出
windows
amd64那么去到阿里云Maven搜索jcef-natives https://developer.aliyun.com/mvn/search 再查找依赖的版本和平台下载jar
点击右边的下载题标获取jar 用压缩包软件打开它
将里面的压缩包复制出来jcef-natives-windows-amd64-jcef-87476e9cef-110.0.25g75b1c96chromium-110.0.5481.78.tar 将压缩包内容解压到项目目录中这里我项目创建了一个叫chrome的目录
编写一个简单demo
package top.lingkang;import me.friwi.jcefmaven.CefAppBuilder;
import me.friwi.jcefmaven.CefBuildInfo;
import me.friwi.jcefmaven.MavenCefAppHandlerAdapter;
import org.cef.CefApp;
import org.cef.CefClient;
import org.cef.browser.CefBrowser;import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;/*** author lingkang* created in 2023/9/22**/
public class Demo01 {public static void main(String[] args) throws Exception {CefAppBuilder builder new CefAppBuilder();// window下不需要OSRboolean useOSR false;builder.getCefSettings().windowless_rendering_enabled useOSR;builder.setAppHandler(new MavenCefAppHandlerAdapter() {Overridepublic void stateHasChanged(org.cef.CefApp.CefAppState state) {// 关闭应用时退出jvm运行if (state CefApp.CefAppState.TERMINATED) System.exit(0);}});// 设置cef运行参数这里为空builder.addJcefArgs(args);// 设置 cef chrome实例的目录关键若不设置他会默认从网络中下载国外网络可能下载不稳定导致失败// 我的 cef chrome 位于项目的chrome目录下 C:\Users\Administrator\Desktop\project\java\demo-desktop\chromebuilder.setInstallDir(new File(System.getProperty(user.dir) File.separator chrome));// 由于是手动设置cef的chrome我们要跳过ins检查防止版本不一致导致从镜像站下载builder.setSkipInstallation(true);// 全局的 CefApp 每个程序只能有一个线程安全CefApp build builder.build();// 显示一些版本信息CefBuildInfo buildInfo CefBuildInfo.fromClasspath();System.out.println(buildInfo);CefApp.CefVersion cefVersion build.getVersion();System.out.println(cefVersion);// 创建一个浏览器客户端实例CefClient client build.createClient();boolean isTransparent true;// 透明背景// 创建一个浏览器实例设置访问 url https://www.baidu.comCefBrowser browser client.createBrowser(https://www.baidu.com, useOSR, isTransparent);// 获取UI组件Component uiComponent browser.getUIComponent();// 获得键盘焦点事件uiComponent.addFocusListener(new FocusListener() {Overridepublic void focusGained(FocusEvent e) {System.out.println(获得键盘焦点事件);}Overridepublic void focusLost(FocusEvent e) {System.out.println(失去键盘焦点事件);}});// 添加一个鼠标点击监听uiComponent.addMouseListener(new MouseAdapter() {int i 0;Overridepublic void mouseClicked(MouseEvent e) {System.out.println(e);if (i % 2 0) // 执行JavaScript命令browser.executeJavaScript(alert(鼠标点击), null, 1);i;}});// 创建 JFrame UI 用于放入chromeJFrame main new JFrame(lingkang);main.getContentPane().add(uiComponent, BorderLayout.CENTER);main.setSize(800, 600);//大小main.setLocation(0, 0);//位置main.setVisible(true);//显示main.addWindowListener(new WindowAdapter() {Overridepublic void windowClosing(WindowEvent e) {// 关闭应用时要释放资源CefApp.getInstance().dispose();main.dispose();System.exit(0);//0正常退出1非正常退出}});}
} 方式二
基于方式一删除下面的代码
// 设置 cef chrome实例的目录关键若不设置他会默认从网络中下载国外网络可能下载不稳定导致失败
// 我的 cef chrome 位于项目的chrome目录下 C:\Users\Administrator\Desktop\project\java\demo-desktop\chrome
// builder.setInstallDir(new File(System.getProperty(user.dir) File.separator chrome));
// 由于是手动设置cef的chrome我们要跳过ins检查防止版本不一致导致从镜像站下载
// builder.setSkipInstallation(true);它默认会去下面的镜像中下载
// CefAppBuilder() 中的构造参数
https://github.com/jcefmaven/jcefmaven/releases/download
https://repo.maven.apache.org/maven2/me/friwi
// 可自定义
builder.setMirrors();