---
title: "TinyMCE for Java Swing integration"
description: "Reference documentation for existing users of the end-of-life TinyMCE for Java Swing integration."
canonical_url: "https://www.tiny.cloud/docs/tinymce/latest/swing/"
md_url: "https://www.tiny.cloud/docs/tinymce/latest/swing/index.md"
version: "latest"
last_updated: "2026-09-28T23:17:04Z"
tokens: 1162
---
# TinyMCE for Java Swing integration

> **Important:** TinyMCE’s Java Swing integration was deprecated in TinyMCE 8.0 and reached end-of-life on December 31, 2025. The integration is no longer available for purchase. This page is a reference for existing users of the integration.
The **TinyMCE for Swing** integration configures the TinyMCE editor in a Java Swing application. To add the integration to a Java project, complete the following steps.

## Copy the TinyMCE for Swing libraries

From the release `zip` file, select all the Java libraries under the `lib` folder and import them into the Java project. These libraries contain everything required to run the integration.

## Select a deployment and create a configuration

The Swing integration supports three origins for the TinyMCE code: **embedded** (recommended), **cloud**, or **external**.

- Embedded deployments use the version of TinyMCE prepackaged with the current release of the integration. This is guaranteed to be compatible with the integration specific plugins.

```java
final Config myTinyConfiguration = Config.embedded();
```
- Cloud deployments pull TinyMCE from the Tiny Cloud. Use this option by passing your API key and [specifying the Tiny Cloud version](../editor-plugin-version/#specifying-the-tinymce-editor-version-deployed-from-cloud). Ensure you replace `<no_api_key>` with your API key.

```java
final Config myTinyConfiguration = Config.cloud("<no_api_key>", "8-stable");
```
- External deployments use a local version of TinyMCE served from a specified address.

```java
final Config myTinyConfiguration = Config.external("http://<my_server>/<path>/tinymce.min.js");
```
The configuration can be customized purely in Java:

```java
final Path contentPath = Paths.get(System.getProperty("user.home"));
final Config myConfig = Config.embedded()
    .setContentPath(contentPath)
    .setImageSaverLocal(contentPath)
    .addPlugins(
      "advcode advlist autolink lists link image editimage charmap emoticons " +
      "anchor searchreplace insertdatetime media table powerpaste help wordcount")
    .putProperty("width", 800)
    .putProperty("height", 600)
    .putProperty("menubar", false)
    .putProperty("toolbar",
      "undo redo | blocks | bold italic backcolor | " +
      "alignleft aligncenter alignright alignjustify | " +
      "bullist numlist outdent indent | removeformat | link image | help")
    .putProperty("images_reuse_filename", true);
```
Or by passing JavaScript that returns a TinyMCE configuration object.

**config.js**:

```js
(function() {
  return {
    width: 800,
    height: 600,
    plugins: [
      'advcode', 'advlist', 'autolink', 'lists', 'link', 'image', 'editimage', 'charmap', 'emoticons',
      'anchor', 'searchreplace', 'insertdatetime', 'media', 'table', 'powerpaste', 'help', 'wordcount'
    ],
    menubar: false,
    toolbar: [
      'undo redo | blocks | bold italic backcolor | alignleft aligncenter ',
      'alignright alignjustify | bullist numlist outdent indent | removeformat | ',
      'link image | help'
    ].join(''),
    images_reuse_filename: true
  };
})();
```
Snippet of **Edit.java**:

```java
final Path contentPath = Paths.get(System.getProperty("user.home"));
final Config myConfig = Config.embedded()
    .setContentPath(contentPath)
    .setImageSaverLocal(contentPath)
    .setInitConf(Edit.class, "config.js"); // load config.js using class loader
```

## Create the editor and add it to the view

Create the editor by passing a configuration object. The editor initialization is asynchronous so starting a new editor will return a future value that can be accessed as a normal future value.

```java
final Config myConfig = Config.embedded();
final TinyMCE editor = TinyMCE.futureEditor(myConfig).get();
editor.setHtml("<p>Hello World!</p>");
final JPanel holder = new JPanel(new BorderLayout());
holder.add(editor.component(), BorderLayout.CENTER);
```
After the editor is extracted from the future value, use its component (`JComponent`) to position it in the view.

## Other resources

- [TinyMCE for Swing code samples repository](https://github.com/tinymce/tinymce-swing-codesamples) - Refer to this link for examples on how to use TinyMCE for Swing.
- The integration release `zip` file includes additional documentation, including `Javadocs` and API reference guides. The `zip` file includes the following documents:

  - `readme.txt` - This file has general information about TinyMCE for Swing integration.
  - `license.txt` - This file has all the license details about TinyMCE for Swing as a commercial software.
  - `release-notes.txt` - This file has information about the integrations and enhancements that have been implemented in TinyMCE for Swing integration.
  - `change-log.md` - This file lists all user impacting and major changes for every release of TinyMCE for Swing integration.
  - `jar` files - The `jar` files that implement the integration can be found under `lib/`
  - `javadoc` - The `javadoc` can be found at `docs/javadoc/index.html`.
