将 HTML 从 JEditorPane 复制到外部应用程序时出现问题

2023-12-09

我在将 HTML 从 JEditorPane 复制到系统剪贴板然后粘贴到其他应用程序时遇到问题:

  • OpenOffice 3.2 - 提示“请求的剪贴板格式不可用”
  • Thunderbird 3.13 - 对粘贴不执行任何操作
  • Firefox 3.6.9 - 接受纯文本,但例如在 GMail 中“撰写邮件”对粘贴不执行任何操作

顺便说一句,我正在运行WinXP。在文本编辑器、MS Outlook、MS Word 等其他应用程序中,它按预期工作,即我得到带有 HTML 标签的纯文本或根据应用程序所需的 mimetype 格式化的文本。

任何人都知道出了什么问题吗?这是 Swing 或 OpenOffice/Mozilla 中的问题吗?

请参阅下面的测试应用程序并尝试。我也尝试过自定义可转让但一旦我提供数据风味使用 mimetype="text/html" 它会停止在上述应用程序中工作。

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

/**
 * Demonstrates problem with copy/paste between JEditorPane and OpenOffice/Thunderbird/Firefox.
 * 
 * @author martin
 */
public class HtmlCopyDemo extends JFrame
{
    public HtmlCopyDemo()
    {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        setSize(400, 400);

        final JEditorPane editor = new JEditorPane();
        editor.setContentType("text/html");
        editor.setText("<html><head></head><body>Here's some <b>formatted</b> <i>text</i></body></html>");
        add(editor, BorderLayout.CENTER);

        JPanel panel = new JPanel(new FlowLayout());
        add(panel, BorderLayout.NORTH);

        JButton button = new JButton("Copy");
        panel.add(button);
        button.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                editor.selectAll();
                editor.copy();
            }
        });

        final JComboBox combo = new JComboBox(new Object[]{"text/html", "text/plain"});
        panel.add(combo);
        combo.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                String text = editor.getText();
                editor.setContentType((String) combo.getSelectedItem());
                editor.setText(text);
            }
        });
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                new HtmlCopyDemo().setVisible(true);
            }
        });
    }
}

这很可能是接收端的问题。 (我不能100%确定,因为我没有你的环境。)

Add Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();到你的按钮actionPerformed我可以看到剪贴板有正确的内容和完整的 html:

<html>
  <head>

  </head>
  <body>
    Here's some <b>formatted</b> <i>text</i>
  </body>
</html>

粘贴到 Word 2007 中可以正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 HTML 从 JEditorPane 复制到外部应用程序时出现问题 的相关文章

随机推荐

  • android java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行、第 0 列

    我正在开发一个应用程序 它下载一些文件并将其文本保存在 file content 字段中到数据库中 文件大小可以从几 KB 到 10 MB 不等 该应用程序在保存时适用于所有尺寸 在长 file content 记录上使用 select 语
  • Plotly:带有下拉菜单的散点图,用于更改数据和计算注释

    我正在尝试制作一个带有 2 个下拉菜单的散点图 用于选择要绘制 x 轴和 y 轴的数据列 来自 pandas 数据框 我还希望该图具有随下拉选择而变化的相关统计注释 因为注释是根据 x 和 y 数据作为参数计算的 我已经成功地使用下面的代码
  • 使用操作按钮刷新主面板屏幕

    我正在构建一个闪亮的应用程序 我想刷新主面板屏幕 这是示例代码 我有一个提交按钮来显示数据 我有一个刷新按钮来清除屏幕 我不太确定如何在 R 和闪亮中编写重新刷新按钮的代码 因为我对此很陌生 感谢您的关注 library DT ui lt
  • React hooks useEffect 第二次调用 API 和第一次调用 API 响应也返回

    我正在使用 useEffect 获取 API 并且 API 响应正确 例如 response message This is a image link status success error null 第二次 当我收到下一个 API 调用
  • 在 Android 中的 ViewPager 中将子 Fragment 添加到父 Fragment

    I m developing an app that has some tabs something like this 每个选项卡都是一个 Fragment 每个 Fragment 显示文章 类别和一些其他信息的列表视图 我想做的是 当我
  • 千字节/兆字节/太字节的表示

    我对不同字节单位的表示有点困惑 自始至终都认为 1 字节 8 位 然而 在很多来源中我看到 1 KB 2 10 字节 1024 字节 AND 1 KB 1000 字节 这不就是顶撞在这两种情况下都规定 1 字节是 8 位 不同的来源对这些不
  • GDI+ 通用错误

    当我的图像从网络服务器上的数据库加载时 我看到以下错误 GDI 中发生一般错误 在 System Drawing Image Save Stream流 ImageCodecInfo编码器 编码器参数 encoderParams at Sys
  • SoapClient 未发送证书

    我一直在阅读我能找到的所有问题 答案 但没有一个能解决我的问题 这是使用 cURL 和证书连接到同一 URL pem pem 文件的绝对路径 这有效 ch curl init wsdl curl setopt ch CURLOPT SSL
  • 编写XSL对xml数据执行一些操作

    如何在 products xsl 正文中编写 xsl 以获取数量 gt 10 的产品名称和状况 产品 xml
  • Rails 5.2 ActiveStorage 未定义方法 `signed_id' for nil:NilClass

    我实现了从我的中删除图像的代码User model Rails 5 2 Active Storage 清除 删除附件 我认为它删除了图像 但现在我收到错误 undefined method signed id for nil NilClas
  • 调用 EnvelopesApi#update_document_tabs 返回错误

    我想一次更新文档的所有选项卡 该文档的信封是根据已定义收件人和选项卡的模板创建的 我正在调用this具有以下有效负载的端点来更新选项卡 textTabs validationPattern validationMessage shared
  • 适用于 Windows Phone 7 的 Windows Live ID 身份验证

    我正在开发一个 Windows Phone 7 应用程序 但不想重新实现我自己的身份 身份验证服务 特别是当我们知道用户将使用 Windows Live 帐户登录时 但是我明白从这个线程Microsoft 不会授予对登录用户详细信息的访问权
  • 使用 Python 读取 MS-Word 文件中页眉和页脚中的表格内容

    这是我对这个问题的扩展问题 如何使用Python读取MS Word文件中表格的内容 YusuMishi 提供的解决方案很棒 但它没有捕获页眉和页脚中的页眉 Let me elaborate on that 使用代码 import win32
  • 如何优化这段javascript代码?

    如何优化这个功能呢 我可以为所有操作创建一个函数吗 b hat1 click function hat3 hide hat2 hide hat1 show b hat2 click function hat3 hide hat2 show
  • hibernate 和通用字段映射

    我想用 Hibernate 映射超类中的通用字段 我的妈妈班是 Entity Table name ParameterValue Inheritance strategy InheritanceType SINGLE TABLE Discr
  • 位移位、屏蔽还是位域结构?

    我是使用位的新手 我正在尝试使用现有协议 该协议可以发送三种不同类型的消息 类型1是16位结构 struct digital unsigned int type 2 unsigned int highlow 1 unsigned int s
  • 如何将aidl文件添加到Android studio(来自应用内计费示例)

    我目前正在将 Eclipse 应用程序迁移到 Android Studio 此应用程序使用应用程序内计费 我的主要问题是编译项目和aidl文件 我猜你们都使用这个文件 我收到此错误消息 Gradle error cannot find sy
  • 将两个ScrollView连接在一起

    这是我一直在解决的一个棘手的 iPhone 问题 我在页面上有三个 UIScrollView 一个仅水平滚动 一个仅垂直滚动 一个既水平又垂直滚动 我想将视图锁定在一起 以便水平滚动视图的水平位置与主滚动视图的水平位置匹配 垂直滚动视图同样
  • javax 与 java 包

    javax 包背后的基本原理是什么 java 和 javax 分别包含哪些内容 我知道很多企业包都在 javax 中 但 Swing 新的日期和时间 api JSR 310 以及其他 J2SE 包也是如此 起初javax旨在用于扩展 有时东
  • 将 HTML 从 JEditorPane 复制到外部应用程序时出现问题

    我在将 HTML 从 JEditorPane 复制到系统剪贴板然后粘贴到其他应用程序时遇到问题 OpenOffice 3 2 提示 请求的剪贴板格式不可用 Thunderbird 3 13 对粘贴不执行任何操作 Firefox 3 6 9