小编Dam*_*ien的帖子

使用Java 7在JTextPane中使用样式文本进行奇怪的文本包装

我有两个不同的编辑器使用JTextPane和Java 7中的奇怪错误,这些错误在以前的JVM版本中没有出现.它发生在包含样式文本或组件的长行中.

这是一个演示此错误的示例.在此示例中,每次插入字符时,都会对所有文本应用默认样式.我用JDK 1.7.0_04测试了它.

import java.awt.BorderLayout;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;

public class BugWrapJava7 extends JFrame {

    JTextPane jtp;
    StyledDocument doc;

    public BugWrapJava7() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        jtp = new JTextPane();
        add(jtp, BorderLayout.CENTER);
        jtp.setText("\ntype some text in the above empty line and check the wrapping behavior");
        doc = jtp.getStyledDocument();
        doc.addDocumentListener(new DocumentListener() {
            public void insertUpdate(DocumentEvent e) {
                insert();
            }
            public void removeUpdate(DocumentEvent e) {
            }
            public void changedUpdate(DocumentEvent e) {
            }
        });
        setSize(200, 200);
        setVisible(true);
    }
    public void insert() …
Run Code Online (Sandbox Code Playgroud)

java swing word-wrap java-7

15
推荐指数
2
解决办法
2427
查看次数

使用Java将补充unicode字符序列化为XML文档

我正在尝试使用补充的unicode字符序列化DOM文档,例如U + 1D49C(?,数学脚本大写A).创建具有这样一个字符的节点不是问题(我只是将节点值设置为UTF-16等价物,"\ uD835\uDC9C").但是,在序列化时,Xalan和XSLTC(使用Transformer)和Xerces(使用LSSerializer)都会创建无效的字符实体,例如"��" 而不是"𝒜".我尝试了LSSerializer的"normalize-characters"参数,但不支持它.当编码为unicode时,只有Saxon才能正确使用,而不使用字符实体.

我不能在实践中使用Saxon(除了其他原因,我使用Java applet并且不想加载另一个jar),所以我正在寻找一个使用默认JDK库的解决方案.是否可以从具有补充unicode字符的DOM文档中获取有效的XML文档?

[编辑]我发现其他人遇到了这个问题:http://www.dragishak.com/?p = 131

[edit2]实际上,当我在类路径上没有xerces时,似乎可以使用LSSerializer(使用的类是com.sun.org.apache.xml.internal.serialize.DOMSerializerImpl).它不适用于变压器和com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.

java xml xslt unicode xml-serialization

8
推荐指数
1
解决办法
3383
查看次数

标签 统计

java ×2

java-7 ×1

swing ×1

unicode ×1

word-wrap ×1

xml ×1

xml-serialization ×1

xslt ×1