List icon Contents

JxBrowser in Swing

The easiest way to start working with JxBrowser in a Swing Maven project is to clone the GitHub repository where everything is already set up and ready to go.

Prerequisites

Getting the project

Clone the GitHub repository using the following command:

git clone https://github.com/TeamDev-IP/JxBrowser-QuickStart-Maven-Swing.git
cd JxBrowser-QuickStart-Maven-Swing

Run the Swing application

Use the following command to build and run Swing application:

mvn clean compile exec:java -Djxbrowser.license.key=<your_license_key>

Once launched, you will see a Swing application with a BrowserView component displaying https://html5test.teamdev.com:

BrowserView in Swing app

Project overview

This section explains how the Maven project is configured to include JxBrowser and how a JxBrowser BrowserView component is embedded into a Swing frame to display content of the loaded web page.

Configuring the Maven project

The Maven project is configured to use the JxBrowser Maven repository to fetch the necessary JxBrowser dependencies and Chromium binaries for all platforms.

Here’s how the pom.xml file is configured:

XML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.teamdev.jxbrowser.quickstart.maven</groupId>
    <artifactId>swing</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <!-- Use the latest stable JxBrowser version. -->
       <jxbrowser.version>8.2.1</jxbrowser.version>
        
       <maven.compiler.source>17</maven.compiler.source>
       <maven.compiler.target>17</maven.compiler.target>
        
       <!-- Define the main class for the Java application. -->
       <exec.mainClass>com.teamdev.jxbrowser.quickstart.maven.swing.App</exec.mainClass>
    </properties>
    
    <repositories>
        <!-- Configures the Maven repository for JxBrowser. -->
        <repository>
            <id>com.teamdev</id>
            <url>https://europe-maven.pkg.dev/jxbrowser/releases</url>
        </repository>
    </repositories>

    <dependencies>
        <!-- Fetches Chromium binaries for all platforms. -->
        <dependency>
            <groupId>com.teamdev.jxbrowser</groupId>
            <artifactId>jxbrowser-cross-platform</artifactId>
            <version>${jxbrowser.version}</version>
            <type>pom</type>
        </dependency>

        <!-- Adds dependency to the Swing UI toolkit integration. -->
        <dependency>
            <groupId>com.teamdev.jxbrowser</groupId>
            <artifactId>jxbrowser-swing</artifactId>
            <version>${jxbrowser.version}</version>
        </dependency>
    </dependencies>

</project>

Embedding JxBrowser into Swing

In the Swing application source code you can see how to:

  1. Initialize an engine (Chromium) instance.
  2. Create a browser instance.
  3. Load the required web page.
  4. Embed a BrowserView component into a Swing frame to display the loaded web page.
Java
import static com.teamdev.jxbrowser.engine.RenderingMode.HARDWARE_ACCELERATED;
import static javax.swing.SwingUtilities.invokeLater;

import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.view.swing.BrowserView;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;

public final class App {

    public static void main(String[] args) {
        // Initialize Chromium.
        var engine = Engine.newInstance(HARDWARE_ACCELERATED);

        // Create a Browser instance.
        var browser = engine.newBrowser();

        invokeLater(() -> {
            var frame = new JFrame("JxBrowser Swing");
            frame.addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) {
                    // Shutdown Chromium and release allocated resources.
                    engine.close();
                }
            });
            // Create and embed Swing BrowserView component to display web content.
            frame.add(BrowserView.newInstance(browser));
            frame.setSize(1280, 800);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);

            // Load the required web page.
            browser.navigation().loadUrl("https://html5test.teamdev.com/");
        });
    }
}

What’s next