Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java Swing 嵌入浏览器实现方案及长尾关键词优化标题

Java Swing 嵌入浏览器实现方案及长尾关键词优化标题

原创
作者头像
啦啦啦191
发布于 2025-07-09 10:00:18
发布于 2025-07-09 10:00:18
1560
举报
文章被收录于专栏:Java开发Java开发

Java中使用Swing嵌入浏览器,可通过多种方式实现,以下是几种常见的技术方案及应用实例:

使用JCEF框架

  • 技术方案:JCEF全称为Java Chromium Embedded Framework,它能将Chromium浏览器内核嵌入到Java应用程序中。开发者可在项目的build路径中添加JCEF库文件,通过Java代码调用其API来控制浏览器。首先创建一个新的CefApp实例,并设置缓存路径、日志级别等初始化选项,然后通过CefBrowser类创建浏览器窗口,加载指定URL地址。
  • 应用实例:创建一个Java项目,导入JCEF依赖库。在主类中初始化JCEF环境,设置用户代理字符串等参数。接着创建一个Swing窗口作为浏览器界面,将CefBrowser组件嵌入其中。例如:
代码语言:java
AI代码解释
复制
// 创建Swing窗口
JFrame frame = new JFrame("嵌入浏览器示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
// 创建CefBrowser实例并加载网页
CefBrowser browser = // 此处为创建CefBrowser的具体代码,需根据JCEF规范设置相关参数
browser.loadURL("https://www.baidu.com");
// 将浏览器组件添加到Swing窗口
frame.add(browser.getUIComponent(), BorderLayout.CENTER);
frame.setVisible(true);

使用JEditorPane组件

  • 技术方案:JEditorPane是Swing中的一个文本组件,默认支持纯文本、HTML文本等内容类型。当设置其内容类型为text/html时,可以显示HTML页面。通过注册HyperlinkListener监听器,可处理超链接点击事件,实现页面跳转等功能。
  • 应用实例
代码语言:java
AI代码解释
复制
JEditorPane jep = new JEditorPane();
// 设置显示内容类型为HTML
jep.setContentType("text/html");
// 注册超链接监听器
jep.addHyperlinkListener(new HyperlinkListener() {
    @Override
    public void hyperlinkUpdate(HyperlinkEvent event) {
        if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
            try {
                jep.setPage(event.getURL());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
});
// 加载初始网页
try {
    jep.setPage("https://www.baidu.com");
} catch (IOException e) {
    e.printStackTrace();
}
JScrollPane scrollPane = new JScrollPane(jep);
JFrame frame = new JFrame("JEditorPane浏览器");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(scrollPane, BorderLayout.CENTER);
frame.setSize(800, 600);
frame.setVisible(true);

不过,JEditorPane对网页中CSS的显示处理以及JavaScript脚本执行的支持较弱,适合显示简单HTML页面。

使用DJNativeSwing-SWT组件

  • 技术方案:DJNativeSwing-SWT可用于在Java GUI中内嵌浏览器。通过实例化相关的浏览器对象,并传入不同参数来控制使用的内核,如JWebBrowser webBrowser = new JWebBrowser(JWebBrowser.useWebkitRuntime())可使用WEBKIT内核,但使用WEBKIT内核时通常要求安装Safari浏览器。
  • 应用实例
代码语言:java
AI代码解释
复制
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import dj.nativeSwing.browser.MyBrowser;
import javax.swing.*;
import java.awt.*;

public class Main {
    public static void main(String[] args) {
        String url = "http://www.baidu.com";
        String title = "hello swing";
        openForm(url, title);
    }

    private static void openForm(String url, String title) {
        UIUtils.setPreferredLookAndFeel();
        NativeInterface.open();
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame(title);
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame.getContentPane().add(new MyBrowser(url), BorderLayout.CENTER);
                frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
                frame.setLocationByPlatform(true);
                frame.setVisible(true);
                frame.setResizable(true);
                frame.setSize(1400, 700);
                frame.setLocationRelativeTo(frame.getOwner());
            }
        });
        NativeInterface.runEventPump();
    }
}

使用JavaFX WebView结合Swing

  • 技术方案:JavaFX中的WebView组件内置了WebKit内核,能很好地支持HTML5、CSS3和JavaScript。通过JFXPanel可以将JavaFX组件嵌入到Swing应用中。先创建JFXPanel作为容器,再在Platform.runLater中初始化WebView并设置场景,最后将其添加到Swing窗口中。
  • 应用实例
代码语言:java
AI代码解释
复制
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.web.WebView;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class SwingTestCombine {
    static WebView webView = null;

    private static void gotoURL(String url) {
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                webView.getEngine().load(url);
            }
        });
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setTitle("Java Explorer");
        frame.setLayout(new BorderLayout());
        frame.setSize(1400, 900);
        frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        frame.setLocation(100, 20);

        JFXPanel jFXPanel = new JFXPanel();
        frame.add(jFXPanel, "Center");

        JPanel controlPanel = new JPanel();
        frame.add(controlPanel, "North");

        JTextField urlField = new JTextField();
        JButton goButton = new JButton("GO");
        urlField.setText("input");

        controlPanel.setLayout(new BorderLayout());
        urlField.setPreferredSize(new Dimension(frame.getWidth() - 100, 1));
        controlPanel.add(urlField, BorderLayout.WEST);
        controlPanel.add(goButton, BorderLayout.EAST);

        goButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                String urlString = urlField.getText();
                gotoURL(urlString);
            }
        });

        urlField.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                urlField.setText("");
            }
        });

        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                webView = new WebView();
                jFXPanel.setScene(new Scene(webView));
                webView.getEngine().load("https://www.baidu.com");
            }
        });

        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                if (JOptionPane.showConfirmDialog(null, "关闭?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
                    System.exit(0);
                }
            }
        });

        frame.setVisible(true);
    }
}

以上代码创建了一个带有地址栏和“GO”按钮的Swing窗口,点击按钮可在嵌入的WebView中加载指定网址,默认加载百度页面。


Java Swing, 浏览器嵌入,实现方案,WebView 组件,JxBrowse


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java GUI 框架如何选择?
在 Java 开发中,构建图形用户界面(GUI)是一项常见需求。Java 提供了多种 GUI 框架,如 Swing、SWT、AWT、SwingX、JGoodies、JavaFX、Apache Pivot 和 BeautyEye。那么,面对这么多框架,如何选择适合自己的呢?
井九
2024/10/12
2.1K0
Java GUI 编程完全指南:从 Swing 到 JavaFX 图形界面实战开发
图形用户界面(GUI)是用户与程序交互的重要方式。虽然 Web 应用流行,但 Java GUI 依然广泛应用于:
用户11690575
2025/06/08
8810
Java 图形用户界面(GUI)开发:从 Swing 入门到实战项目
Java 除了广泛用于后端开发与跨平台服务,也支持图形用户界面(GUI)的开发。对于需要构建桌面应用、工具软件、图形交互系统的场景,Java 的 GUI 框架(如 Swing、JavaFX)提供了丰富的组件和事件机制。
用户11690571
2025/06/10
4420
Java GUI 编程实战:使用 Swing 构建现代化桌面应用
Java GUI(图形用户界面)编程是开发跨平台桌面应用的重要技术。Swing 是 Java 提供的高级 GUI 工具包,可以构建结构清晰、功能丰富的桌面应用程序。
用户11690575
2025/06/10
3680
Java GUI 编程全攻略:Swing 与 JavaFX 入门实战
Java 不仅能写服务器端程序,还可以用于创建桌面图形界面应用。常用的 GUI 库包括:
用户11690575
2025/06/06
3460
Java一分钟之-Swing组件:JTable, JTree, JTextArea
Java Swing 提供了丰富的组件库,其中JTable、JTree和JTextArea用于展示数据和用户输入。本文将深入浅出地介绍这些组件,常见问题,易错点以及如何避免,同时提供代码示例。
Jimaks
2024/05/30
4730
Java GUI 图形界面开发详解:从 AWT 到 Swing 的全面实践
尽管 Web 应用和移动端占据主流,但桌面端仍广泛应用于内网工具和企业应用。Java 提供了两套 GUI 开发库:
用户11690571
2025/06/11
4230
这个中秋,我用 Java 画了一个月饼!
今年中秋节,我又想写点不一样的来给大家祝福,用 Java 来画一个月饼,听起来是不是很好玩?
Java技术栈
2019/09/16
1K0
这个中秋,我用 Java 画了一个月饼!
JavaSwing界面跳转技巧
在JavaSwing应用程序中实现流畅的用户界面是非常重要的一部分。一个好的用户界面不仅需要美观的设计,还需要良好的交互体验。其中,界面跳转是用户体验的重要组成部分。本文将为你介绍JavaSwing界面跳转技巧,帮助你设计出流畅且易用的用户界面。
用户10354340
2023/08/08
4350
Java GUI 编程实战:用 Swing 构建桌面应用全指南
很多人一提到 Java,就想到后端服务、Web 框架或安卓开发。但 Java 的 GUI(图形用户界面)能力同样强大,尤其是 Swing,作为跨平台桌面开发利器,它让我们可以快速构建功能丰富、美观实用的桌面软件。
用户11690571
2025/06/10
3670
Java图形程序设计
所有的Swing组件必须由时间分派线程(EventQueue.invokeLater)配置
用户2436820
2018/09/05
9920
Java图形程序设计
猫头虎分享:如何使用 Java 的 Swing 组件创建一个简单的网站导航界面?
Java 的 Swing 是开发桌面应用程序的强大工具。对于初学者来说,利用 Swing 创建一个简单的网站导航界面,是理解 GUI 开发的良好起点。本文将带你一步步实现一个基本的网站导航窗口,包括按钮、文本框和链接跳转功能。
猫头虎
2025/06/01
1740
猫头虎分享:如何使用 Java 的 Swing 组件创建一个简单的网站导航界面?
Java入门(17)-- 多线程
Java中将并发完成的每一件事情称为线程。Java语言提供了并发机制,我们可以在程序中执行多个线程,每一个线程完成一个功能,并与其他线程并发执行,这种机制被称为多线程。
爱学习的程序媛
2022/04/07
5930
Java入门(17)-- 多线程
打包java程序(上)
java作为一个跨平台的程序语言,虽说给程序员带来了方便,但是还是苦了用户。因为运行java程序需要装java虚拟机,版本如果不对还容易启动不来。
phith0n
2020/10/15
1.1K0
java图形用户界面
在 Web 应用大行其道的今天,桌面应用似乎显得有些“老派”。但实际上,Java Swing 依然在许多领域发挥着不可替代的作用,比如 企业内部工具、离线管理软件、教学软件 等。本文就从基本的讲起。
找Bug
2025/04/04
5360
java图形用户界面
java swing入门教程_java swing基础(菜鸟教程学习)
3.Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表 4个器件
全栈程序员站长
2022/09/15
3.2K0
java JAVA生成随机椭圆二一个以上widget的frame
 JAVA生成随机椭圆二一个以上widget的frame,内部类 package liezi; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TwoButtons { JFrame frame; JLabel label1; JLabel label2; public static void main(String[] args){ TwoButtons TwoButtons=new Two
葫芦
2019/05/09
5100
Java学习之AWT GUI编程
既然前面提到了要重写冰蝎和一些反序列化工具,当然就不能随便说说而已。在编写这些工具还是要使用图形化工具来的方便一些,所以提前把GUI的框架给学习一遍。
全栈程序员站长
2021/04/07
1.6K0
【Java】利用Swing实现简单的计算器 代码分享
Main.java package myCalculator; import javax.swing.JFrame; public class Main { public static void main(String[] args) { MyFrame frame = new MyFrame();//创建窗口 frame.setTitle("计算器");//设置窗口标题 frame.setDefaultCloseOperation(JFrame.E
用户7718188
2021/11/01
8300
股票收益图生成器,股票持仓图生成器免费,股票账户模拟生成器【装逼娱乐必备】
下载地址:https://www.pan38.com/share.php?code=HJmmK
用户11697648
2025/06/12
5000
推荐阅读
相关推荐
Java GUI 框架如何选择?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档