1

我的 Swing 应用程序包含一个 JEditorPane,它允许用户以所见即所得的方式编辑文本,包括粗体、斜体和设置字体等的工具栏按钮。

JEdi​​torPane 上的内容类型是 text/html

问题:用户希望能够在编辑器窗格中键入制表符,关闭编辑对话框(将 HTML 文本保存到持久存储)并查看他们的制表符呈现。但是,HTML 将所有空格视为单个空格。

public class NoteTest {
    public static void main(String[] args) {
        final JEditorPane editPane1 = new JEditorPane("text/html", "Try typing some tabs");
        editPane1.setPreferredSize(new Dimension(400, 300));
        JOptionPane.showMessageDialog(null, new JScrollPane(editPane1));
        JOptionPane.showMessageDialog(null, new JScrollPane(new JEditorPane("text/html", editPane1.getText()))); // where did the tabs go?
    }
}

在第一个 JEditorPane 中键入选项卡后,我们从中获取 HTML 文本,并将其传递给第二个 JEditorPane,它将选项卡呈现为空格。

如何呈现这些选项卡?我应该将用户输入的内容保存为 RTF 而不是 HTML?我是否应该解析 HTML 并构建一个包含行和单元格的 HTML 表格(呃)。或者有什么方法可以告诉 swing 将制表符呈现为制表符?

4

2 回答 2

3

为了尽快获得更好的帮助,请发布 SSCCE。此 SSCCE 未显示您描述的行为。

包含标签的文本

n请注意&之间g的“制表符” typin g

import java.awt.Dimension;
import javax.swing.*;

public class NoteTest {
    public static void main(String[] args) {
        final JEditorPane editPane1 = new JEditorPane("text/html", "Try typing some tabs");
        editPane1.setPreferredSize(new Dimension(400, 300));
        JOptionPane.showMessageDialog(null, new JScrollPane(editPane1));
        JOptionPane.showMessageDialog(null, new JScrollPane(new JEditorPane("text/html", editPane1.getText()))); // where did the tabs go?
    }
}

最后有一些标签消失了,但这是有道理的,因为除非包含在pre元素中,否则 HTML 不正确支持标签。我猜 Swing HTML 解析忽略它们是多余的。

于 2012-05-15T21:08:32.770 回答
1

如果您对文本和制表符使用 < PRE > </PRE > 标记怎么办?

于 2012-05-16T05:59:33.227 回答