Java Swing Storing&使用选项卡呈现文本

时间:2012-05-15 20:56:57

标签: java html swing rtf jeditorpane

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

JEditorPane上的内容类型为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将标签字符渲染为标签?

2 个答案:

答案 0 :(得分:3)

为了更好地提供帮助,请发布SSCCE。此SSCCE不会显示您描述的行为。

Text with tab included

请注意n&之间的'标签' g的{​​{1}}。

typin  g

最后有一些标签消失了,但这是有道理的,因为HTML中不支持标签,除非包含在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? } } 元素中。我猜测Swing HTML解析会忽略它们是多余的。

答案 1 :(得分:1)

如果使用< PRE> < / PRE>文本标签和标签char?