Java使用JCEF开发 windows桌面应用

Java使用JCEF开发 windows桌面应用一 写在前面以前写 windows 桌面应用首选用 C 当然是最好用的解决方案之一

大家好,欢迎来到IT知识分享网。

先了解一些:

CEF是什么? Chromium Embedded Framework (CEF)是个基于Google Chromium项目的开源Web browser控件,支持Windows, Linux, Mac平台。除了提供C/C++接口外,也有其他语言的移植版。因为基于Chromium,所以CEF支持 Webkit & Chrome中实现的 HTML5 的特性,并且在性能上面,也比较接近Chrome。

JCEF是什么?它是 CEF 在Java语言的实现。它基于 Chromium 嵌入式框架 (CEF),允许您将 Web 浏览器嵌入到 Java Swing 桌面应用程序中。

<dependency> <groupId>me.friwi</groupId> <artifactId>jcefmaven</artifactId> <version>116.0.19</version> </dependency>

代码示例:

package org.example; import me.friwi.jcefmaven.CefAppBuilder; import me.friwi.jcefmaven.CefInitializationException; import me.friwi.jcefmaven.MavenCefAppHandlerAdapter; import me.friwi.jcefmaven.UnsupportedPlatformException; import org.cef.CefApp; import org.cef.CefClient; import org.cef.browser.CefBrowser; import org.cef.browser.CefFrame; import org.cef.browser.CefMessageRouter; import org.cef.handler.CefDisplayHandlerAdapter; import org.cef.handler.CefFocusHandlerAdapter; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.IOException; public class MainFrame extends JFrame { private static final long serialVersionUID = -0L; private final JTextField address_; private final CefApp cefApp_; private final CefClient client_; private final CefBrowser browser_; private final Component browerUI_; private boolean browserFocus_ = true; MainFrame(String startURL, boolean useOSR, boolean isTransparent, String[] args) throws UnsupportedPlatformException, CefInitializationException, IOException, InterruptedException { CefAppBuilder builder = new CefAppBuilder(); builder.getCefSettings().windowless_rendering_enabled = useOSR; builder.setAppHandler(new MavenCefAppHandlerAdapter() { @Override public void stateHasChanged(org.cef.CefApp.CefAppState state) { if (state == CefApp.CefAppState.TERMINATED) System.exit(0); } }); if (args.length > 0) { builder.addJcefArgs(args); } cefApp_ = builder.build(); client_ = cefApp_.createClient(); CefMessageRouter msgRouter = CefMessageRouter.create(); client_.addMessageRouter(msgRouter); browser_ = client_.createBrowser(startURL, useOSR, isTransparent); browerUI_ = browser_.getUIComponent(); address_ = new JTextField(startURL, 100); address_.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { browser_.loadURL(address_.getText()); } }); client_.addDisplayHandler(new CefDisplayHandlerAdapter() { @Override public void onAddressChange(CefBrowser browser, CefFrame frame, String url) { address_.setText(url); } }); address_.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { if (!browserFocus_) return; browserFocus_ = false; KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner(); address_.requestFocus(); } }); client_.addFocusHandler(new CefFocusHandlerAdapter() { @Override public void onGotFocus(CefBrowser browser) { if (browserFocus_) return; browserFocus_ = true; KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner(); browser.setFocus(true); } @Override public void onTakeFocus(CefBrowser browser, boolean next) { browserFocus_ = false; } }); getContentPane().add(address_, BorderLayout.NORTH); getContentPane().add(browerUI_, BorderLayout.CENTER); pack(); setTitle("我的工具"); setSize(1400, 800); setLocationRelativeTo(null); setVisible(true); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { CefApp.getInstance().dispose(); dispose(); } }); } public static void main(String[] args) throws UnsupportedPlatformException, CefInitializationException, IOException, InterruptedException { boolean useOsr = false; new MainFrame("http://www.baidu.com/", useOsr, false, args); } }

启动应用后,会展示一个浏览器窗口

Java使用JCEF开发 windows桌面应用

image.png

三、参考:Java使用JCEF开发 windows桌面应用https://zhuanlan.zhihu.com/p/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118135.html

(0)
上一篇 2025-11-15 15:20
下一篇 2025-11-15 15:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信